PowerShell is een praktische en krachtige tool om jouw werkzaamheden sneller te kunnen uitvoeren. Jij wilt een PowerShell master worden en dat begrijpen we maar al te goed! We hebben een stappenplan gemaakt om jou vaardiger te maken en als je wel eens gewerkt hebt met Windows command-line dan heb je mazzel, want we zullen aandacht besteden hoe je jouw kennis daarover handig kunt omzetten in kennis van PowerShell.

Stap 1:

Ben je nog niet op de hoogte van wat PowerShell precies is lees dan snel onze blog: Wat is PowerShell?

Stap 2:

Ten eerste moet je natuurlijk PowerShell hebben. Als je Windows 10 gebruikt heb je PowerShell 5 al geïnstalleerd, dus dat is mooi. Werk je met Windows 8 dan heb je PowerShell 4 tot je beschikking. In het geval van Windows 7 moet je zelf PowerShell gaan installeren en dat is natuurlijk iets gecompliceerder.
De ervaren gebruiker van PowerShell gebruikt de Integrated Scripting Envronment (ISE) als interface, waar het voor de beginnende gebruiker verstandiger is om PowerShell Console als interface te gebruiken.

Stap 3:

Nu alles geïnstalleerd is kan je aan de slag en wat je dan merkt is dat veel Windows command-line syntax precies doet wat je verwacht in PowerShell. Een voorbeeld daarvan is dat "dir” nog steeds een lijst geeft van alle mappen en bestanden in de huidige map.


Stap 4:

Fijn dat we weten dat stap 2 werkt. Maar is het dan ook zo dat dit daadwerkelijke PowerShell commands zijn? Nee, het zijn aliassen. Dat betekent dat het systeem wel weet wat je bedoelt maar het eerste vertaalt naar zijn eigen taal voordat het aan de slag kan. Eigenlijk alsof je een Engelse opdracht eerst even in je hoofd naar het Nederlands vertaalt voordat je de opdracht uitvoert.
Om nu jouw kennis te vertalen naar kennis van PowerShell is er een handige manier. Typ namelijk ‘help’ in combinatie met het bij jou bekende command in en PowerShell laat je duidelijk zien hoe je die zelfde command in PowerShell zou kunnen gebruiken.


Het enige is wel dat je de geavanceerde help mogelijkheid eerst moet instaleren. Zorg dat je ingelogd bent in Administrator modus en typ dan "update-help” dit kan eventjes duren, maar is zeker de moeite waard. Mocht dit niet meteen werken typ dan "update-help -verbose -force -ErrorAction SilentlyContinue” dan heb je kans dat hij het wel doet. Vanaf dat moment typ je "get-help”. Je kan zelfs "-examples” achter de combinatie van "get-help” en je command typen waardoor je enkele voorbeelden te zien krijgt.


Stap 5:

Nu weten we heel wat over de verschillende commands na het lezen van hun uitleg door het gebruik van de help functie, maar we kunnen er nog veel meer over te weten komen. Door het toevoegen van "-full” krijg je uitgebreide toelichting over wat je allemaal kan met die command.
Een andere fijne functie is dat het mogelijkheid is om ""*.txt”-recourse” achter jouw command te typen. Dan krijg je een lijst met alleen maar .txt files in de specifieke map en alle sub mappen van die map.
Als je wel eens geprobeerd hebt om in een registry te komen met Windows command line, dan kan je merken hoe krachtig PowerShell wel is op het moment dat je ""HKLM:\Software”” gebruikt, je krijgt dan namelijk een lijst van alle high-level registry keys.

Stap 6:

Misschien had je het tijdens het lezen al opgemerkt, alle commands zijn van dezelfde werkwoord-zelfstandig naamwoord ofwel verb-noun structuur. Dat moet een opluchting zijn voor iedereen die altijd aan het strijden was met ongestructureerde VB en VBA namen in Windows command line. We noemen de commands binnen PowerShell cmdlets en die terminologie zullen we dan vanaf nu ook aanhouden.

Om je een beetje meer gevoel te geven van deze verb-noun structuur staan hier onder een aantal cmdlets en natuurlijk hun betekenis.

  • set-location: stelt de huidige werk locatie naar een specifieke locatie.
  • get-content: verschaft de inhoud van een document.
  • get-process: roept alle processen op die op de computer draaien.
  • invoke-webrequest: haalt de inhoud van een website.
Een concreet voorbeeld ziet er dan als volgt uit:
Copy-item  c:\users\[username] \documents\* c:\temp
Daarmee kopieer je alle documenten en mappen uit de documents map van jouw computer naar c:\temp.

Dan zijn er drie handige cmdlets die jou helpen om PowerShell nog sneller onder de knie te krijgen:

  • Get-command: Alle mogelijke cmdlets, door hier "*-zelfstandig naamwoord” aan toe te voegen komen dan alleen alle mogelijke cmdlets met dat specifieke zelfstandig naamwoord.
  • Get-verb: Alle mogelijke werkwoorden (zoals; get, set, copy).
  • Clear-host: Maakt het scherm weer leeg.

Stap 7:

Nu komt een wel heel belangrijk begrip om de hoek kijken. Pipes zijn eigenlijk wat je er misschien wel van had verwacht, namelijk een aan een schakeling van cmdlets. Daarbij wordt dan de output van de eerste cmdlet ingevoerd in de tweede cmdlet en zo verder. Het moeilijkste hiervan is eigenlijk dat de output van de eerste cmdlet zodanig moet zijn dat de tweede cmdlet er iets mee kan.
Neem bijvoorbeeld: Get-ChildItem -Path C:\WINDOWS\System32 | Out-Host -Paging
Hierbij wordt de output van de eerste cmdlet doormiddel van de tweede in meerdere paginas weergegeven in plaats van in een lange lijst. Zo verkrijg je meer overzicht en is deze manier van werken ook nog eens sneller.

Het is dus niet zo dat je zomaar elke twee willekeurige cmdlets achter elkaar kunt uitvoeren, dit komt door het verschil tussen de output van de eerste en de input eisen van de tweede cmdlet. Gelukkig is er een handige methode om dit obstakel weg te nemen.

De cmdlet "get-member” wordt er eentje die je (zeker in het begin) veel zult gaan gebruiken. Wat er namelijk gebeurt als je die als tweede cmdlet in een pipeline gebruikt is dat er een TypeName tevoorschijn komt. De TypeName is de soort output van de eerste cmdlet. Als je nu een tweede cmdlet wilt gebruiken na de eerste cmdlet om de output daarvan te bewerken moet deze tweede cmdlet dus input van deze specifieke TypeName accepteren.

Fijn dat PowerShell een cmdlet heeft die alle cmdlets vind die input van een bepaalde type accepteren. Met: "get-command -Parametertype (vul hier de TypeName in die we vonden als output van de eerste cmdlet)” vind je alle cmdlets die de output van je eerste cmdlet als input accepteren.

Stap 8:             Volg een training!

Met de bovenstaande tips lukt het je waarschijnlijk om enigszins aan de slag te gaan, maar wil je een echte master worden dan gaat dat het makkelijkst met een training van Master it Training. Wij maken gebruik van Active Learning, dus je zal niet naar saaie klassikale uitleg hoeven te luisteren, maar je gaat zelf met de theorie én de praktijk aan de slag in kleine klassen. Dat natuurlijk onder begeleiding van een trainer die er vol voor gaat om jou jouw leerdoelen te laten bereiken.

De training die je het beste kunt volgen als je niet tot nauwelijks ervaring hebt is onze Training Automating Administration with Windows PowerShell de beste keuze. Ervaring met Windows Server en WINDOWS Client zijn essentieel.

Een vervolg training daarop is onze Training Advanced Automated Administration with Windows PowerShell. In de vervolg training ga je aan de slag met de Desired State Configuration, script errors en zogenaamde "Controller” scripts.

We hebben ook een speciale training voor SharePoint Administrators, Training PowerShell for SharePoint Administrators. Deze training is evenals de bovengenoemde Advanced training een vervolg op onze Training Automating Administration with Windows PowerShell.

Wil je dan nog jouw kennis over Desired State Configuration (DSC) uitbreiden hebben we ook nog Training PowerShell 5.0 and Desired State Configuration. Deze training zal echter niet alleen over DSC gaan, maar over nog veel meer functies jouw kennis naar een hoger niveau tillen.