Aan de slag met Windows Powershell

© PXimport

Aan de slag met Windows Powershell

Geplaatst: 27 juni 2014 - 06:30

Aangepast: 24 november 2022 - 10:59

Edmond Varwijk

Misschien heb je wel eens van Windows PowerShell gehoord of het gebruikt, maar ook als er geen belletje rinkelt, is dat niet heel verwonderlijk. Met Windows PowerShell kun je complexe handelingen op de computer met commando's eenvoudiger maken. Wat is het, en hoe je kun je het beginnen te gebruiken?

Windows is een grafisch besturingssysteem waar je met de muis activiteiten start en stuurt. Om de interface mooi en opgeruimd te houden, is maar een beperkt aantal functies direct toegankelijk, voor andere moet u diep in het systeem duiken en vaak veel handelingen verrichten. Hetzelfde resultaat, maar dan sneller en gemakkelijker is te bereiken via PowerShell. PowerShell is de command-line-interface van Windows waar je tekstopdrachten aan het besturingssysteem geeft. Lees ook: 80 Tips voor Windows 8.

Nu denken velen als het woord PowerShell valt, dat het heel snel heel moeilijk wordt. Dat hoeft echter helemaal niet. Ook voor dagelijks gebruik heeft PowerShell voldoende te bieden. Iets wat bijvoorbeeld in PowerShell al veel sneller gaat dan in het Windows van de muis, is het verkrijgen van systeeminformatie. Een overzicht van de netwerkkaarten, de MAC-adressen en de IP-configuratie bijvoorbeeld. In PowerShell is het één commando, in Windows veel klikken en vensters openen en sluiten.

Bovendien kun je de output van PowerShell altijd filteren of weer verder verwerken in een volgend commando. Een overzicht van alle gedeelde mappen, een overzicht van de geplande taken, een taak toevoegen, het is allemaal met één commando te doen in PowerShell.

01 De console starten

PowerShell begint met het openen van de console waar je commando's kunt invoeren die de computer uitvoert zodra je op Enter drukt. Windows heeft twee van dergelijke consoles, de Opdrachtprompt en de PowerShell, de laatste is verreweg de krachtigste. Om de PowerShell te starten klik je op Start / Alle programma's / Bureau-accessoires / PowerShell / PowerShell. Gebruik je geen Windows 7, maar Windows 8 of 8.1, druk dan op de Windows-toets om naar de Metro-interface te gaan en typ dan PowerShell. Klik dan op Windows PowerShell.

 

© PXimport

Windows beschikt over twee commando-vensters. PowerShell is hiervan de meest krachtige.

 

© PXimport

PowerShell starten via de Metro-interface in Windows 8.

 

© PXimport

Helemaal overschakelen op de PowerShell is goed mogelijk. De vertrouwde DOS-commando's kun je gewoon blijven gebruiken.

02 Opdrachten geven en uitvoeren

Het PowerShell-venster is op de hongerig knipperende prompt na, helemaal leeg. Die leegte komt al snel intimiderend over (ook omdat er geen enkele aanwijzing is wat je kunt doen). De werking is echter eenvoudig. Achter de prompt kun je een commando typen dat zodra je op Enter drukt, door de computer wordt uitgevoerd.

Om te zien welke versie van PowerShell je gebruikt, typ je het commando host en druk op Enter. Bij Version zie je nu de versie van PowerShell, versie 1 was Windows XP en Vista. Versie 2 tot en met zitten respectievelijk in Windows 7, 8 en 8.1. Om de console te sluiten gebruik het commando Exit opnieuw gevolgd door een druk op Enter. Met de pijltjestoets omhoog en omlaag blader je door eerder gebruikte commando's.

 

© PXimport

In Windows XP, Vista 7, 8 en 8.1 zitten verschillende versies van PowerShell, al zien die er allemaal hetzelfde uit.

03 Cmdlets

Een opdracht die PowerShell kan uitvoeren heet een cmdlet (command-let). Daarvan bestaan duizenden varianten, maar het aantal dat echt op een pc beschikbaar is, is helemaal afhankelijk van de versie van Windows en eventueel extra geïnstalleerde software. PowerShell in Windows 8 heeft bijvoorbeeld standaard iets meer dan 400 cmdlets. Om ze allemaal te zien, kun je het commando Get-Command gebruiken. Na de Enter vliegt de lange lijst over het scherm.

Blader er doorheen en je ziet dat de naam van een cmdlet meteen ook beschrijft wat het commando doet. De naam begint altijd met een bewerking, dan een streepje en dan het onderdeel waar het commando op uitgevoerd moet worden, bijvoorbeeld Get-Printjob of Set-Date.

 

© PXimport

PowerShell in Windows 8 heeft standaard iets meer dan 400 cmdlets.

PowerShell starten met meer rechten

Wanneer je PowerShell start, krijgt het programma dezelfde rechten als jijzelf. En was je onder Windows XP en Vista veelal de beheerder van de pc, onder Windows 7 en 8(.1) ben je dat niet meer. Je bent nog maar een gewone gebruiker en dus is PowerShell dat ook. Maar voor veel taken heeft PowerShell meer rechten nodig. PowerShell starten met de extra rechten van een beheerder kan door met de rechtermuisknop op de PowerShell-koppeling te klikken en te kiezen voor Als administrator uitvoeren.

Als PowerShell met extra rechten is gestart, kun je dit zien in de titelbalk, daar staat dan in plaats van Windows PowerShell, Administrator: Windows PowerShell. Je kunt dit ook standaard inschakelen door met rechts te klikken op de snelkoppeling, klik dan op Eigenschappen / Snelkoppeling / Geavanceerd / Als administrator uitvoeren.

 

© PXimport

Een foutmelding in PowerShell is vaak het gevolg van te weinig rechten. PowerShell starten met de rechten van administrator is dan vaak de oplossing.

04 Parameters

Behalve als losse opdracht kunnen de cmdlets ook nog worden aangevuld met extra parameters. De extra parameters bieden de mogelijkheid de uitvoering van de cmdlet te sturen. Een parameter begint altijd met een spatie en een streepje met de naam van de parameter er aan vast, dan een spatie en dan de invulling van de parameter.

Bijvoorbeeld Get-Process geeft een overzicht van alle actieve processen met hun geheugen en processorgebruik, maar Get-Process -ProcessName explorer geeft dat alleen specifiek voor het proces met de naam explorer.

 

© PXimport

Het verschil tussen de cmdlet Get-Process en Get-Process met aanvullende parameters.

05 Knippen en plakken in PowerShell

Met een paar parameters erbij wordt een PowerShell-commando al snel lang en complex. Bovendien zul je veelgebruikte commando's al snel willen bewaren in een document buiten de console om ze via kopiëren en plakken gemakkelijk te kunnen hergebruiken. Om tekst in de console te selecteren, gebruik je de muis.

Is de selectie gemaakt, dan is Enter voldoende om het te kopiëren. Om tekst te plakken in de console, is een klik met de rechtermuisknop voldoende. De bekende toetscombinaties voor knippen, kopiëren en plakken werken niet in de PowerShell-console.

06 Helpfunctie

PowerShell beschikt over uitgebreide helpfuncties. Om uitleg te krijgen bij een cmdlet gebruik je Get-Help, bijvoorbeeld Get-Help -Name Get-Process. Voor uitleg over de concepten van PowerShell of taalspecifieke zaken is er Get-Help About_ zoals Get-Help About_Modules. De uitleg die PowerShell geeft komt van het internet, maar is gedownload naar de computer. Met Update-Help kun je de gedownloade uitleg updaten. Is de uitleg te groot en vliegt die over het scherm, gebruik dan de toevoeging | more om het te doseren, bijvoorbeeld Get-Help -Name Get-Process | more.

De output stopt dan als het beeld vol is en gaat als je Enter drukt een regel verder, of als je de spatiebalk indrukt een vol beeld verder. Dat |-teken heet overigens een pipe of het sluisteken. Het kan ook handig zijn de uitleg direct online te lezen, met de parameter -online, bijvoorbeeld Get-Help -online Get-Process. PowerShell opent dan de juiste webpagina van Microsoft TechNet meteen in de browser.

 

© PXimport

Na een update van de helpfunctie geeft de opdracht geen foutmelding, maar duidelijke uitleg.

 

© PXimport

PowerShell kan ook uitleg online zoeken en direct in de browser openen.

07 Handig formuleren

Bij het invoeren van commando's kun je in de console gebruikmaken van een aantal handigheidjes. De eerste is tab-completion, dat wil zeggen dat als je het eerste deel van een opdracht typt en dan de Tab-toets indrukt, het commando wordt aangevuld. Is er maar één vervolg mogelijk, komt dat er te staan, zijn er meer mogelijkheden dan kun je net zo vaak de Tab-toets indrukken tot de goede aanvulling er staat. Dus met Get- en de Tab-toets blader je door alle Get-commando's.

En dat werkt ook bij argumenten. Zo gaat het sneller en maak je minder fouten. Ook kun je gebruikmaken van wildcards om delen van tekst te vervangen. Zoek je informatie over Outlook, iets wat later in dit artikel nog gebeurt, dan hoef je geen Outlook te typen maar volstaat Outl*. Een sterretje (*) geeft aan dat alles wat daarna komt akkoord is, terwijl een vraagteken (?) aangeeft dat op die plek in de opdracht elk willekeurig ander teken akkoord is.

08 PowerShell ISE

Het PowerShell-team binnen Microsoft wilde de console nog veel beter maken, maar werd daarbij door het Windows-team gehinderd. Dus besloten ze een eigen PowerShell-programmeeromgeving te bouwen. Dat werd PowerShell ISE: de Integrated Scripting Environment. Je kunt deze starten net als elk ander Windows-programma via het startmenu of met het commando ISE vanuit de PowerShell-console.

ISE combineert het consolevenster met een handige bibliotheek waarin alle cmdlets staan. Mocht je die niet zien, via View / Show Command Add-on schakel je deze in. Bovendien werkt de tab-completion hier nog beter, je krijgt tijdens het typen al de mogelijkheden te zien waarmee je het commando verder kunt bouwen. Er is een menu- en knoppenbalk met opties en zoals je in het menu Edit kunt zien, werken plakken, knippen en kopiëren in ISE wel op de standaard Windows-manier.

 

© PXimport

PowerShell ISE is de betere versie van de PowerShell-console: dezelfde mogelijkheden en nog veel meer.

09 Hangend proces stoppen

PowerShell is ook handig voor systeembeheer. Hangt er bijvoorbeeld een proces, dan kun je dat via het Taakbeheer opzoeken en afsluiten.

Via Get-Proces zie je alle draaiende processen. Via Get-Process en dan de naam van het proces, zie je die informatie voor alleen dat ene proces. Dus Get-process Outl* geeft de status van het programma (proces) Outlook. Lees de ID af en met het commando Stop-Process -id en dan het ID-nummer van Outlook sluit je in één keer de hangende Office-applicatie af.

 

© PXimport

Een hangend programma sluiten via PowerShell.

10 Programma's zoeken

Behalve wanneer er een snelkoppeling op het bureaublad staat, kan het starten van een programma ook veel klikken kosten. Dat gaat opnieuw sneller via de PowerShell. Met Start-Process kun je een programma starten, bijvoorbeeld Excel via Start-Process Excel. Zien welke programma's allemaal geïnstalleerd zijn, is iets lastiger. Windows kent namelijk vele soorten programma's.

Om de normale Windows-programma's te zien gebruik je Get-WmiObject -Class Win32_Product of Get-StartApps voor alle Metro-Apps op de pc. Om een specifiek programma of Metro-App te zoeken kun je gebruikmaken van de mogelijkheid commando's na elkaar te gebruiken via het |-teken. Get-StartApps | where name -like "b*" geef alle applicaties die beginnen met de letter 'b'. Het deel na de verticale streep gebruikt de uitkomst van het deel voor de streep als input voor de eigen verwerking.

 

© PXimport

Specifieke programma's zoeken met PowerShell.

11 Overzicht van services en status

Via Configuratiescherm / Systeembeheer/ Services kun je de services zien die op de pc aanwezig zijn, welke gestart en welke gestopt. Dat zijn alweer een aantal klikken en als je wilt sorteren op welke opstart of gestopt zijn, komen er daar nog een paar bij. Het kan ook met het commando Get-Service | Where-Object {$_.Status -eq "Stopped"} om de services te zien die gestopt zijn of met "Running" voor alle actieve services.

12 Informatie over netwerkadapters

Een andere handige informatiebron is de Get-NetAdapter cmdlet. Deze geeft een overzicht van de netwerkkaarten in de pc, merk en model, de status van de verbinding en het MAC-adres en de snelheid. Een mooi overzicht van alle geavanceerde instellingen die zo diep weggestopt in Windows zitten, krijg je via Get-NetAdapterAdvancedProperty en dankzij een streepje kun je de output beperken tot alleen de actieve netwerkkaart, bijvoorbeeld Get-NetAdapterAdvancedProperty | where name -like "Ethernet 2" als Ethernet 2 de actieve netwerkkaart is. En via Get-NetConnectionProfile zie je of het netwerk dat de kaart gebruikt als openbaar, werk of privé is aangemerkt.

 

© PXimport

Een snel en compleet overzicht over de netwerkverbindingen en alle instellingen kost in PowerShell maar een paar commando's.

13 DOS-commando's gebruiken

In de PowerShell-console kun je ook bijna alle 'oude' DOS-commando's gebruiken, zoals ping en ipconfig. Alleen interactieve DOS-commando's zoals nslookup werken daar niet. Het PowerShell-alternatief voor ipconfig is Get-NetIPAdress. Of via Get-NetIPAddress | where InterfaceAlias -eq "Ethernet 2" als je alleen de IP-configuratie van netwerkkaart 2 wilt weten.

Waar de uitkomst van ipconfig alleen 'domme' tekst is, kun je die van het krachtigere PowerShell-commando altijd weer gebruiken om vervolgslagen mee te maken zoals filteren op een van de kenmerken.

PowerShell bronnen op internet

Op internet is erg veel informatie te vinden over PowerShell. Allereerst op de Microsoft-website en de PowerShell Team weblog.

Ook YouTube is een goede plek om uitleg te vinden voor PowerShell. Veel van de video's zijn nog voor oudere versies van PowerShell, maar zoeken op 'PowerShell introduction' en 'PowerShell beginner' geeft goede resultaten om met PowerShell te beginnen. Wel gaat veel informatie over scripting (het combineren van cmdlets tot miniprogramma's), maar ook over slim gebruik van cmdlets voor alledaags computergebruik is veel te vinden.

Deel dit artikel
Voeg toe aan favorieten