Met PowerShell kun je meer dan alleen folders en bestanden van het file system benaderen. Het file system noemen we een provider. Maar er zijn er meer zoals Certificaten en het Windows Register.
Met het commando Get-PSProvider
kun je de lijst van providers opvragen. Met het commando Set-Location
(of de alias cd
= change directory) kun je door de items bladeren alsof het een file system is, bijvoorbeeld: Set-Location HKCU:
en daarna Get-ChildItem
geeft je de entries in de registerkey HKey Current User.
Als IIS (Internet Information Server) bijvoorbeeld als rol geïnstalleerd staat, kun je die ook op deze manier benaderen en beheren. Om een overzicht te krijgen van alle providers gebruik je het commando: Get-PSProvider
.
Providers zijn dus erg handig omdat je ze op eenzelfde manier kunt gebruiken als andere objecten in PowerShell.
Voer in PowerShell ISE de volgende commando's uit:
Set-Location ENV:
Get-Childitem
Je krijgt de inhoud van de omgevingsvariabelen te zien. Hier vind je ontzettend veel info die je nodig kunt hebben en ook weer kunt ge bruiken in scripts. Denk bijvoorbeeld aan de computernaam (com putername) en de ingelogde gebruiker (username).
Probeer op eenzelfde manier ook eens de volgende providers uit en
zoek het antwoord op de vragen:
Set-Location Alias:
en vervolgens Get-Childitem
)Set-Location Function:
en vervolgens Get-Childitem
)Set-Location Cert:
en vervolgens Get-Childitem
) Dit geeft je de certificaten verdeeld over de machine en de user.TIP Om weer terug te keren naar PowerShell typ je : C:
Typ het onderstaande script over in PS ISE, let goed op dat je geen typfouten maakt en dat elke regel in het script ook op een nieuwe regel in ISE komt te staan. Let op de backtick ( ` ) in regel 2. Met deze backtick koppel je regel 2 aan regel 3 vast. Beide regels mogen dus ook in één regel staan.
New-Item -ItemType directory -Path C:\data1
1..50 | ForEach-Object {New-Item -ItemType File
-Path C:\data1 -Name "File $_.txt"}
Regel 1
Regels 2 en 3
ForEach-Object
'voert' de objecten (getallen) stuk voor stuk aan de bewerking.-ItemType
) in de folder die wordt genoemd bij de parameter -Path
. De bestandsnaam van de file bestaat uit een stukje tekst File_
en dan twee karakters: $_
en vervolgens de extensie .txt
.$_
zijn speciaal omdat ze een zogenaamde placeholder vormen. Elke keer komt op die plek het volgende object uit de aan geboden verzameling (array) te staan. Dus de eerste keer wordt het object 1 'gevoerd' en ontstaat de naam: File_1.txt. Vervolgens zorgt het volgende object uit de verzameling dat de naam File_2.txt wordt enzovoort.Op dit moment hoef je dit allemaal nog niet te kunnen of toe te pas sen. We beginnen eenvoudig met de volgende opdracht.
Schrijf de PowerShell-commando's waarme je: