Door gebruik te maken van de juiste Po­werS­hell-op­drach­ten kunt u modules nauw­keu­rig inzetten. Deze over­zich­te­lij­ke cmdlets kunnen verder worden aangepast met optionele pa­ra­me­ters. We pre­sen­te­ren de 40 meest es­sen­ti­ë­le Po­werS­hell-op­drach­ten, zodat u optimaal kunt werken in uw systeem of netwerk.

Wat is een Po­werS­hell-opdracht?

Po­werS­hell, dat sinds Windows 7 vooraf is ge­ïn­stal­leerd, stelt u in staat om Po­werS­hell-op­drach­ten in te voeren die ver­vol­gens door Windows worden uit­ge­voerd. Naast de cmd-op­drach­ten van de op­dracht­re­gel zijn er tal van andere op­drach­ten of cmdlets die alleen door Po­werS­hell zelf kunnen worden begrepen. Deze cmdlets bestaan uit een werkwoord en een zelf­stan­dig naamwoord, die worden ge­schei­den door een kop­pel­te­ken. Bovendien kunt u deze Po­werS­hell-op­drach­ten uit­brei­den met optionele pa­ra­me­ters, ge­schei­den door spaties. Het nut van Po­werS­hell reikt verder dan be­heer­ders; het blijkt ook van on­schat­ba­re waarde te zijn op het gebied van ont­wik­ke­ling. Met een overvloed aan vooraf ge­ïn­stal­leer­de Po­werS­hell-op­drach­ten be­schik­baar, maken we u vertrouwd met de meest cruciale.

De be­lang­rijk­ste Po­werS­hell-op­drach­ten

Met Po­werS­hell-op­drach­ten kunt u uit­ge­brei­de be­heer­ta­ken uitvoeren met slechts een paar in­voer­be­wer­kin­gen. Tot de ba­sis­op­drach­ten die u waar­schijn­lijk het vaakst zult gebruiken, behoren op­drach­ten die een eerste overzicht van de structuur van uw netwerk bieden, andere Po­werS­hell-op­drach­ten weergeven, helpen bij es­sen­ti­ë­le be­vei­li­gings­con­fi­gu­ra­ties en waar­de­vol­le analyses mogelijk maken. Hier volgen enkele van de be­lang­rijk­ste Po­werS­hell-op­drach­ten waarmee u vertrouwd moet zijn:

1. Get-Module -All

Gebruik de opdracht Get-Module -All om een eerste overzicht te krijgen van alle ge­ïm­por­teer­de Po­werS­hell-modules.

Get-Module -All
shell

2. Get-Command

Er is een overvloed aan vooraf ge­de­fi­ni­eer­de Po­werS­hell-op­drach­ten. Om een overzicht te krijgen van de momenteel be­schik­ba­re Po­werS­hell-op­drach­ten, gebruikt u gewoon de opdracht Get-Command. Deze opdracht geeft een over­zich­te­lij­ke lijst van alle mogelijke acties en biedt beknopte uitleg voor elke res­pec­tie­ve cmdlet. Dit geldt zelfs als u extra modules hebt ge­ïn­stal­leerd.

Get-Command
shell

3. Get-Help

De hierboven be­schre­ven Get-Command-lijst biedt een eerste overzicht. Voor meer ge­de­tail­leer­de in­for­ma­tie over een opdracht en de bij­be­ho­ren­de opties kunt u de cmdlet Get-Help gebruiken. Deze opdracht opent de help­be­stan­den op uw pc en geeft ver­vol­gens alle be­schik­ba­re in­for­ma­tie weer. Om deze opdracht te activeren, com­bi­neert u Get-Help met de opdracht waarvan u de syntaxis wilt bekijken.

Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]
shell

4. Get-Process

Om snel de lijst met momenteel actieve toe­pas­sin­gen, programma’s en processen op uw systeem te con­tro­le­ren, kunt u de opdracht Get-Process gebruiken. Als u een bepaalde toe­pas­sing opgeeft, ontvangt u aan­vul­len­de in­for­ma­tie over die spe­ci­fie­ke toe­pas­sing.

Get-Process
shell

5. Get-Service

De opdracht Get-Service werkt op dezelfde manier als de cmdlet Get-Process. Het verschil is dat deze opdracht in­for­ma­tie biedt over alle actieve services. Als u in­for­ma­tie wilt over een bepaalde service of een spe­ci­fie­ke categorie services, kunt u uw verzoek eenvoudig spe­ci­fi­ce­ren.

Get-Service
shell

6. Stop-proces

U kunt ook ver­schil­len­de Po­werS­hell-op­drach­ten gebruiken om processen via de shell te stoppen. Een optie is de opdracht Stop-Process. U de­fi­ni­eert het be­tref­fen­de proces op basis van naam, ID of andere kenmerken. Hier volgt een voorbeeld:

Stop-Process -Name "processname"
shell
Stop-Process -Id 3582 -Confirm -PassThru
shell

Met -Confirm wordt om be­ves­ti­ging van het commando gevraagd. Het commando -PassThru vraagt om be­ves­ti­ging van het gestopte proces. Dit gebeurt niet au­to­ma­tisch.

7. ConvertTo-HTML

Om problemen of mogelijke com­pli­ca­ties snel te iden­ti­fi­ce­ren, is een dui­de­lij­ke weergave van groot belang. U kunt dit bereiken door gebruik te maken van de opdracht ConvertTo-HTML, die de uitvoer van uw Po­werS­hell-op­drach­ten omzet in een HTML-bestand. Hierdoor wordt de in­for­ma­tie weer­ge­ge­ven in een ge­bruiks­vrien­de­lijk ko­lom­for­maat. De op­dracht­struc­tuur ziet er doorgaans als volgt uit:

Get-Command | ConvertTo-Html > c:\temp\AllCommands.html
shell

8. ConvertTo-Xml

U kunt op dezelfde manier te werk gaan als u een XML-ge­ba­seer­de weergave van een specifiek object nodig hebt. Dit kunt u doen met de opdracht ConvertTo-Xml. In het volgende voorbeeld con­ver­teert u de huidige datum naar XML-indeling:

Get-Date | ConvertTo-Xml
shell

9. Waar-Object

U kunt de opdracht Where-Object gebruiken om het resultaat van een cmdlet te filteren. Wanneer u een opdracht uitvoert, ontvangt u vaak talrijke objecten die meer in­for­ma­tie bevatten dan u nodig hebt. Door Where-Object in com­bi­na­tie met een pipe te gebruiken, kunt u alleen de spe­ci­fie­ke in­for­ma­tie weergeven die u zoekt. Als u bij­voor­beeld de services wilt bekijken die dit jaar zijn gemaakt of bij­ge­werkt, kunt u dat als volgt doen:

Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }
shell

10. Get-History

Om alle Po­werS­hell-op­drach­ten weer te geven die u tijdens een sessie hebt ingevoerd, is Get-History de juiste cmdlet. Om alle Po­werS­hell-op­drach­ten weer te geven:

Get-History
shell

Met deze spe­ci­fi­ca­tie roept u alleen de laatste tien Po­werS­hell-op­drach­ten op:

Get-History -Count 10
shell

11. Ge­schie­de­nis wissen

U kunt ook de lijst met gebruikte Po­werS­hell-op­drach­ten ver­wij­de­ren. Gebruik de cmdlet Clear-History om alle ver­mel­din­gen te ver­wij­de­ren:

Clear-History
shell

Om bepaalde Po­werS­hell-op­drach­ten te ver­wij­de­ren, voegt u gewoon de bij­be­ho­ren­de pa­ra­me­ters toe. De volgende invoer ver­wij­dert alle Po­werS­hell-op­drach­ten die ‘Help’ bevatten of eindigen op ‘Syntax’.

Clear-History -Command *Help*, *Syntax
shell

12. Ge­schie­de­nis toevoegen

Het is ook mogelijk om Po­werS­hell-op­drach­ten aan een sessie toe te voegen. Zo kunt u ze later opnieuw oproepen. De juiste cmdlet hiervoor is Add-History.

Add-History
shell

13. Uit­voer­be­stand

Gebruik de cmdlet Out-File om de uitvoer van uw Po­werS­hell-op­drach­ten op uw computer op te slaan. Hiermee worden de Po­werS­hell-op­drach­ten op­ge­sla­gen in een onbewerkt tekst­be­stand onder het opgegeven pad.

Get-Process | Out-File -FilePath .\Process.txt
shell

14. Kopieer item

In Po­werS­hell kunt u ook elementen kopiëren en de kopie op een andere locatie opslaan. Gebruik de opdracht Copy-Item en geef de map op waarin de kopie moet worden op­ge­sla­gen. Dit werkt als volgt:

Copy-Item "C:\folder1\file.txt" -Destination "C:\folder2"
shell

15. Get-ChildItem

U kunt de opdracht Get-ChildItem gebruiken om items uit een of meer op­slag­lo­ca­ties op te halen. Als er sub­e­le­men­ten zijn, worden deze ook weer­ge­ge­ven. Deze opdracht geeft standaard de kenmerken, de tijd­stem­pel van de laatste wijziging, de be­stands­groot­te en de naam van het element weer. Als een op­slag­lo­ca­tie leeg is, wordt de uitvoer weg­ge­la­ten.

Get-ChildItem -Path C:\example
shell

De at­tri­bu­ten worden weer­ge­ge­ven onder de regel ‘Mode’. De volgende ei­gen­schap­pen komen vaak voor:

  • a (archief)
  • d (directory)
  • h (verborgen)
  • l (link)
  • r (alleen-lezen)
  • s (systeem)

16. Set-Au­then­ti­co­de­Sig­na­tu­re

Om uw bestanden te be­vei­li­gen, kunt u ze voorzien van een Au­then­ti­co­de-hand­te­ke­ning met behulp van de opdracht Set-Au­then­ti­co­de­Sig­na­tu­re. Dit werkt echter alleen voor bestanden die het Subject Interface Package (SIP) on­der­steu­nen.

$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert
shell

17. Item oproepen

Om de stan­daard­ac­tie uit te voeren die aan een specifiek bestand is gekoppeld, biedt Invoke-Item de een­vou­dig­ste methode. Deze opdracht zorgt er bij­voor­beeld voor dat een uit­voer­baar bestand direct wordt uit­ge­voerd of dat een do­cu­ment­be­stand in de stan­daard­toe­pas­sing wordt geopend. In dit voorbeeld wordt het bestand standaard in Microsoft Word geopend:

Invoke-Item "C:\Test\example.doc"
shell

18. Start-Job

Om een ach­ter­grond­taak op uw lokale computer te starten, kunt u het daarvoor bestemde commando gebruiken. Met Start-Job kunt u een specifiek commando op de ach­ter­grond uitvoeren, zonder in­ter­ac­tie met de huidige sessie.

Start-Job -ScriptBlock { Get-Process -Name pwsh }
shell

Voer acties uit met deze Po­werS­hell-op­drach­ten

Hoewel de eerdere Po­werS­hell-op­drach­ten voor­na­me­lijk gericht waren op het geven van over­zich­ten, kunt u ook ver­schil­len­de acties uitvoeren met behulp van de juiste cmdlets, waardoor de pro­duc­ti­vi­teit van uw systeem wordt verbeterd. De volgende Po­werS­hell-op­drach­ten stroom­lij­nen uw workflow.

19. Dui­de­lij­ke inhoud

Om de inhoud van een element te wissen en het element zelf te behouden, is het commando Clear-Content de ideale keuze. Een voorbeeld van het gebruik ervan is het wissen van de tekst uit een document terwijl het bestand zelf intact blijft. Het proces wordt als volgt uit­ge­voerd:

Clear-Content C:\Temp\example.txt
shell

20. ForEach-Object

Met de opdracht ForEach-Object kunt u een bewerking uitvoeren op alle elementen in een ver­za­me­ling in­voe­r­ob­jec­ten. In dit voorbeeld delen we drie gehele getallen in een array door 10:

10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10
shell

21. Objecten ver­ge­lij­ken

Om het handmatig ver­ge­lij­ken van ver­schil­len­de sets objecten te vermijden, kunt u de cmdlet Compare-Object gebruiken. Deze opdracht genereert een rapport waarin de ver­schil­len tussen de records worden ge­mar­keerd. Het eerste record dient als re­fe­ren­tie­ob­ject en het tweede record als ver­schil­ob­ject. U kunt aangeven welke factoren moeten worden ver­ge­le­ken. Als deze in­for­ma­tie wordt weg­ge­la­ten, worden alleen de te­ken­reeks­re­sul­ta­ten ver­ge­le­ken. De uitvoer is on­der­ver­deeld in ei­gen­schap­pen die alleen in het re­fe­ren­tie­ob­ject voorkomen (<) en ei­gen­schap­pen die alleen in het ver­schil­ob­ject voorkomen (>). In dit voorbeeld bevat document1.txt de waarden Berlijn, Londen en Parijs. Document2.txt bevat Berlijn, Wenen en Amsterdam.

Compare-Object -ReferenceObject (Get-Content -Path C:\Test\Document1.txt) -DifferenceObject (Get-Content -Path C:\Test\Document2.txt)
InputObject	SideIndicator
---------------	-----------------
Wien		==>
Amsterdam	==>
London		<==
Paris		<==
shell

Inhoud die in beide do­cu­men­ten voorkomt (in dit geval ‘Berlijn’) wordt standaard niet weer­ge­ge­ven.

22. Nieuw object

Een van de handigste Po­werS­hell-op­drach­ten is New-Object. U kunt deze cmdlet gebruiken om een object uit het .NET-framework of een Component Object Model (COM) te in­stan­ti­ë­ren. Als u bij­voor­beeld een System.Version-object wilt maken met ‘1.2.3.4’ als con­struc­tie­string, voert u de opdracht als volgt uit:

New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
shell

23. Select-Object

Gebruik de opdracht Select-Object om een object of een groep objecten te se­lec­te­ren die de door u ge­de­fi­ni­eer­de ei­gen­schap­pen hebben. De pa­ra­me­ters die u hiervoor kunt opgeven, zijn als volgt:

  • Eerste
  • Ach­ter­naam
  • Uniek
  • Overslaan
  • Index

In het volgende voorbeeld gebruiken we de Po­werS­hell-op­drach­ten Get-Process en Sort-Object om de drie processen weer te geven die op het moment van invoer het meeste geheugen ver­brui­ken.

Get-Process | Sort-Object -Property WS | Select-Object -Last 3
shell

24. Alias instellen

Windows-snel­kop­pe­lin­gen zijn handig om acties nog sneller uit te voeren. Po­werS­hell biedt deze optie ook. U kunt de cmdlet Set-Alias gebruiken om een snel­kop­pe­ling voor ver­schil­len­de Po­werS­hell-op­drach­ten te de­fi­ni­ë­ren. In het volgende voorbeeld maken we de alias ‘ci’ voor de opdracht Get-ChildItem voor de huidige sessie.

PS> Set-Alias -Name ci -Value Get-ChildItem
PS> Get-Alias -Name ci
shell

25. Locatie instellen

Gebruik de opdracht Set-Location om de locatie van het werk­ge­heu­gen te wijzigen. Mogelijke nieuwe locaties zijn mappen, submappen, re­gis­ter­lo­ca­ties of pro­vi­der­pa­den. In het volgende voorbeeld geven we de C:-schijf op als de huidige op­slag­lo­ca­tie:

PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>
shell

26. Set-Service

U kunt de cmdlet Set-Service gebruiken om met een service te com­mu­ni­ce­ren en deze te starten, stoppen of pauzeren. Het is ook mogelijk om de ei­gen­schap­pen van de service te wijzigen. In het volgende voorbeeld wijzigen we de weer­ga­ve­naam van een service van ‘New Work­sta­ti­on’ in ‘Old Work­sta­ti­on’.

Set-Service -Name New Workstation -DisplayName "Old Workstation"
shell

27. Tijdzone instellen

Om de tijdzone van uw systeem te wijzigen, is het commando Set-TimeZone de juiste keuze. Om de ge­co­ör­di­neer­de we­reld­tijd als nieuwe sys­teem­tijd in te stellen, gebruikt u dit commando:

Set-TimeZone -Id "UTC"
shell

28. Computer opnieuw opstarten

U kunt het be­stu­rings­sys­teem op uw lokale computer of een externe computer opnieuw opstarten met behulp van de juiste Po­werS­hell-opdracht, genaamd Restart-Computer. Deze opdracht kan als volgt worden uit­ge­voerd:

Voor uw lokale computer:

Restart-Computer
shell

Voor bepaalde computers in uw netwerk:

Restart-Computer -ComputerName Server01, Server03
shell

29. Service opnieuw starten

Om een service te stoppen en opnieuw te starten met behulp van Po­werS­hell-op­drach­ten, is Restart-Service de juiste cmdlet. U kunt bij­voor­beeld alle services die beginnen met ‘Net’ opnieuw starten:

PS C:\> Restart-Service -DisplayName "net*"
shell

30. Prul­len­bak leegmaken

De prul­len­bak moet re­gel­ma­tig worden geleegd, wat ook mogelijk is via Po­werS­hell. De opdracht hiervoor is Clear-Re­cy­cle­Bin.

Clear-RecycleBin
shell

31. Get-Com­pu­ter­In­fo

De opdracht Get-Com­pu­ter­In­fo wordt gebruikt om systeem- en be­stu­rings­sys­teem­ei­gen­schap­pen op te halen.

Get-ComputerInfo
shell

32. Item ver­plaat­sen

Wanneer u een item van de ene locatie naar de andere wilt ver­plaat­sen, kunt u ver­schil­len­de Po­werS­hell-op­drach­ten gebruiken. De meest gebruikte optie is echter Move-Item. In dit voorbeeld ver­plaat­sen we het bestand old.txt van de schijf C: naar de map D:\Temp en hernoemen we het te­ge­lij­ker­tijd naar new.txt.

Move-Item -Path C:\old.txt -Destination D:\Temp\new.txt
shell

Mo­ni­to­ring en debugging met de juiste Po­werS­hell-op­drach­ten

Po­werS­hell-op­drach­ten die sys­teem­mo­ni­to­ring en -controle mogelijk maken, zijn bijzonder waardevol, vooral bij het testen van de pres­ta­ties van een nieuw netwerk onder re­a­lis­ti­sche om­stan­dig­he­den. De volgende Po­werS­hell-op­drach­ten zijn bijzonder nuttig voor deze doel­ein­den.

33. Debug-proces

Debuggen is een be­lang­rijk proces om ervoor te zorgen dat alle in­stel­lin­gen en processen foutloos verlopen. Hiervoor moet u de juiste debuggers down­lo­a­den en con­fi­gu­re­ren. Zodra dit is gebeurd, gebruikt u de opdracht Debug-Process. In het volgende voorbeeld gebruiken we een debugger voor de Explorer:

PS C:\> Debug-Process -Name "Explorer"
shell

Om meerdere processen te­ge­lij­ker­tijd te debuggen, kunt u ze eenvoudig on­der­ver­de­len met komma’s.

34. Enable-PS­Break­point

Gebruik de opdracht Enable-PS­Break­point om bepaalde breek­pun­ten te activeren. Hierdoor wordt de waarde van de cmdlet vanuit technisch oogpunt ingesteld op ‘true’. Gebruik deze Po­werS­hell-op­drach­ten om alle breek­pun­ten in de huidige sessie te activeren:

Get-PSBreakpoint | Enable-PSBreakpoint
shell

Gebruik deze opdracht om breek­pun­ten te activeren met behulp van hun ID:

Enable-PSBreakpoint -ID 0, 3, 4
shell

35. PS­Break­point uit­scha­ke­len

Om Po­werS­hell-breek­pun­ten weer te de­ac­ti­ve­ren, is de geschikte cmdlet hiervoor Disable-PS­Break­point. Technisch gezien wordt de waarde van de opdracht Enable-PS­Break­point ingesteld op ‘false’. Om een breekpunt met ID 0 te de­ac­ti­ve­ren, voert u het volgende in:

Disable-PSBreakpoint -Id 0
shell

36. Get-Counter

Voor Windows-apparaten kunt u hun pres­ta­tie­ge­ge­vens ophalen met Po­werS­hell. De geschikte opdracht voor deze taak is Get-Counter, die zowel voor uw lokale computer als voor externe computers kan worden gebruikt. In het volgende voorbeeld halen we gegevens op van de lokale computer:

Get-Counter -ListSet *
shell

37. Start-Slaap­stand

Het pauzeren van een script of sessie kan cruciaal zijn, vooral tijdens situaties waarin het systeem over­be­last is. Po­werS­hell biedt hiervoor de opdracht Start-Sleep, waarmee u kunt aangeven hoe lang ac­ti­vi­tei­ten moeten worden ge­pau­zeerd. In het volgende voorbeeld wordt de uit­voe­ring twee seconden ge­pau­zeerd:

Start-Sleep -Seconds 2
shell

38. Test-Pad

Gebruik de opdracht Test-Path om te con­tro­le­ren of alle elementen van een specifiek pad aanwezig zijn. De mogelijke re­sul­ta­ten zijn ‘True’ of ‘False’.

Test-Path -Path "C:\Documents and Settings\user"
False
shell

39. Test­ver­bin­ding

U kunt ook de net­werk­con­nec­ti­vi­teit binnen uw netwerk be­oor­de­len met behulp van Po­werS­hell. Dit doet u door ICMP-echo-ver­zoek­pak­ket­ten naar bepaalde ont­van­gers te sturen via de opdracht Test-Con­nec­ti­on, die reacties opvraagt via het Internet Control Message Protocol (ICMP). In ons voorbeeld sturen we een verzoek naar Server02 via het IPv6-protocol.

Test-Connection -TargetName Server02 -IPv6
shell

40. Get-WinEvent

Wanneer u een of meer ge­beur­te­nis­log­boe­ken wilt bekijken, kunt u ver­schil­len­de Po­werS­hell-op­drach­ten gebruiken. De meest prak­ti­sche cmdlet voor dit doel is Get-WinEvent. Om alle logboeken van uw lokale computer op te halen, kunt u de volgende opdracht gebruiken:

Get-WinEvent -ListLog *
shell
Ga naar hoofdmenu