Zoals in elke scripttaal heeft ook PS een zogenaamde syntax, met andere woorden: de manier waarop een commando in elkaar steekt, waaronder de volgorde. Als voorbeeld het volgende commando:
Get-ChildItem -path C:\Windows\System32 -Filter *.exe -Recurse
Het eerste deel is (meestal) een werkwoord: Get
Om alle mogelijke werkwoorden te zien kun je het commando Get-Verb
gebruiken. Niet alle mogelijkheden zijn werkwoorden. Zo zie je ook New
staan, dit had wellicht beter Create
kunnen zijn.
TIP Het aantal mogelijkheden in commando’s, parameters en opties is afhankelijk van de installatie van het besturingssysteem. Naarmate er meer rollen of features geïnstalleerd zijn, neemt het aantal mogelijkheden in PowerShell ook toe.
Vervolgens wordt het werkwoord altijd gevolgd door een afbreekstreepje/divisie (-), waarna een zelfstandig naamwoord volgt. In bovenstaand voorbeeld: ChildItem
.
Vervolgens komen de parameters (opties) met daarachter de value (waarde). In het voorbeeld staan er drie:
-path
met daarachter de value (waarde) C:\Windows\System32
-Filter
met daarachter de value (waarde) *.exe
-Recurse
met daarachter geen value (waarde).
Het totale commando betekent dus: laat alle bestanden (Get-ChildItem
) zien in de folder C:\Windows\ System32
(-Path
) die elke naam mogen hebben (*
) maar moeten eindigen met de extensie .exe en daarvoor moet je ook zoeken in de submappen onder System32 (-Recurse
)
De *
wordt hier gebruikt als een wildcard en kan vervangen worden door alle tekens.
*.txt
betekent dus zoiets als: er mag van alles voor de punt staan, maar het moet wel eindigen op .txt
. Hier kun je uiteraard handig gebruik van maken. Hieronder nog enkele voorbeelden:
verslag*.docx
alle bestanden die beginnen met het woord verslag en eindigen met de extensie .docxHelp Get-Proc*
geeft in PS alle commando’s weer die beginnen met Get-Proc
zoals Get-Process
, maar bijvoorbeeld ook Get-ProcessMitigation
Een tweede wildcard die je kunt gebruiken is het vraagteken (?). Hiermee kun je net als het * werken, met de uitzondering dat een vraagteken maar voor één teken staat. Voorbeelden:
Verslag?.docx
geeft wel verslag1.docx
en verslagB.docx
, maar niet verslag23.docx
Verslag??.docx
geeft wel verslag23.docx
maar niet verslag_conferentie.docx
Beide wildcards kun je dan ook nog een combineren
Verslag?.*
*Verslag*.txt
*Verslag*.doc?
Maak gebruik van Get-ChildItem
. Met welk commando kun je onderstaande opdrachten bereiken? Noteer de gevonden en geteste commando's in je documentatie.