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-ProcessMitigationEen 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.docxVerslag??.docx geeft wel verslag23.docx maar niet verslag_conferentie.docxBeide 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.