# Wat zijn PowerShell-opdrachten? De 40 belangrijkste opdrachten in één oogopslag

Door gebruik te maken van de juiste PowerShell-opdrachten kunt u modules nauwkeurig inzetten. Deze overzichtelijke cmdlets kunnen verder worden aangepast met optionele parameters. We presenteren de 40 meest essentiële PowerShell-opdrachten, zodat u optimaal kunt werken in uw systeem of netwerk.

## Wat is een PowerShell-opdracht?

PowerShell, dat sinds Windows 7 vooraf is geïnstalleerd, stelt u in staat om PowerShell-opdrachten in te voeren die vervolgens door Windows worden uitgevoerd. Naast de cmd-opdrachten van de opdrachtregel zijn er tal van andere opdrachten of cmdlets die alleen door PowerShell zelf kunnen worden begrepen. Deze cmdlets **bestaan uit een werkwoord en een zelfstandig naamwoord**, die worden gescheiden door een koppelteken. Bovendien kunt u deze PowerShell-opdrachten uitbreiden met **optionele parameters**, gescheiden door spaties. Het nut van PowerShell reikt verder dan beheerders; het blijkt ook van onschatbare waarde te zijn op het gebied van ontwikkeling. Met een overvloed aan vooraf geïnstalleerde PowerShell-opdrachten beschikbaar, maken we u vertrouwd met de meest cruciale.

## De belangrijkste PowerShell-opdrachten

Met PowerShell-opdrachten kunt u uitgebreide beheertaken uitvoeren met slechts een paar invoerbewerkingen. Tot de basisopdrachten die u waarschijnlijk het vaakst zult gebruiken, behoren opdrachten die een eerste overzicht van de structuur van uw netwerk bieden, andere PowerShell-opdrachten weergeven, helpen bij essentiële beveiligingsconfiguraties en waardevolle analyses mogelijk maken. Hier volgen enkele van de belangrijkste PowerShell-opdrachten waarmee u vertrouwd moet zijn:

### 1. Get-Module -All

Gebruik de opdracht **Get-Module -All** om een eerste overzicht te krijgen van alle geïmporteerde PowerShell-modules.

```shell
Get-Module -All
```

### 2. Get-Command

Er is een overvloed aan vooraf gedefinieerde PowerShell-opdrachten. Om een overzicht te krijgen van de momenteel beschikbare PowerShell-opdrachten, gebruikt u gewoon de opdracht **Get-Command**. Deze opdracht geeft een overzichtelijke lijst van alle mogelijke acties en biedt beknopte uitleg voor elke respectieve cmdlet. Dit geldt zelfs als u extra modules hebt geïnstalleerd.

```shell
Get-Command
```

### 3. Get-Help

De hierboven beschreven Get-Command-lijst biedt een eerste overzicht. Voor meer gedetailleerde informatie over een opdracht en de bijbehorende opties kunt u de cmdlet **Get-Help** gebruiken. Deze opdracht opent de helpbestanden op uw pc en geeft vervolgens alle beschikbare informatie weer. Om deze opdracht te activeren, combineert u Get-Help met de opdracht waarvan u de syntaxis wilt bekijken.

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

### 4. Get-Process

Om snel de lijst met momenteel actieve toepassingen, programma’s en processen op uw systeem te controleren, kunt u de opdracht **Get-Process** gebruiken. Als u een bepaalde toepassing opgeeft, ontvangt u aanvullende informatie over die specifieke toepassing.

```shell
Get-Process
```

### 5. Get-Service

De opdracht **Get-Service** werkt op dezelfde manier als de cmdlet Get-Process. Het verschil is dat deze opdracht informatie biedt over alle actieve services. Als u informatie wilt over een bepaalde service of een specifieke categorie services, kunt u uw verzoek eenvoudig specificeren.

```shell
Get-Service
```

### 6. Stop-proces

U kunt ook verschillende PowerShell-opdrachten gebruiken om processen via de shell te stoppen. Een optie is de opdracht **Stop-Process**. U definieert het betreffende proces op basis van naam, ID of andere kenmerken. Hier volgt een voorbeeld:

```shell
Stop-Process -Name "processname"
```

```shell
Stop-Process -Id 3582 -Confirm -PassThru
```

Met -Confirm wordt om bevestiging van het commando gevraagd. Het commando -PassThru vraagt om bevestiging van het gestopte proces. Dit gebeurt niet automatisch.

### 7. ConvertTo-HTML

Om problemen of mogelijke complicaties snel te identificeren, is een duidelijke weergave van groot belang. U kunt dit bereiken door gebruik te maken van de opdracht **ConvertTo-HTML**, die de uitvoer van uw PowerShell-opdrachten omzet in een HTML-bestand. Hierdoor wordt de informatie weergegeven in een gebruiksvriendelijk kolomformaat. De opdrachtstructuur ziet er doorgaans als volgt uit:

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

### 8. ConvertTo-Xml

U kunt op dezelfde manier te werk gaan als u een XML-gebaseerde weergave van een specifiek object nodig hebt. Dit kunt u doen met de opdracht **ConvertTo-Xml**. In het volgende voorbeeld converteert u de huidige datum naar XML-indeling:

```shell
Get-Date | ConvertTo-Xml
```

### 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 informatie bevatten dan u nodig hebt. Door Where-Object in combinatie met een pipe te gebruiken, kunt u alleen de specifieke informatie weergeven die u zoekt. Als u bijvoorbeeld de services wilt bekijken die dit jaar zijn gemaakt of bijgewerkt, kunt u dat als volgt doen:

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

### 10. Get-History

Om alle PowerShell-opdrachten weer te geven die u tijdens een sessie hebt ingevoerd, is **Get-History** de juiste cmdlet. Om alle PowerShell-opdrachten weer te geven:

```shell
Get-History
```

Met deze specificatie roept u alleen de laatste tien PowerShell-opdrachten op:

```shell
Get-History -Count 10
```

### 11. Geschiedenis wissen

U kunt ook de lijst met gebruikte PowerShell-opdrachten verwijderen. Gebruik de cmdlet **Clear-History** om alle vermeldingen te verwijderen:

```shell
Clear-History
```

Om bepaalde PowerShell-opdrachten te verwijderen, voegt u gewoon de bijbehorende parameters toe. De volgende invoer verwijdert alle PowerShell-opdrachten die ‘Help’ bevatten of eindigen op ‘Syntax’.

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

### 12. Geschiedenis toevoegen

Het is ook mogelijk om PowerShell-opdrachten aan een sessie toe te voegen. Zo kunt u ze later opnieuw oproepen. De juiste cmdlet hiervoor is **Add-History**.

```shell
Add-History
```

### 13. Uitvoerbestand

Gebruik de cmdlet **Out-File** om de uitvoer van uw PowerShell-opdrachten op uw computer op te slaan. Hiermee worden de PowerShell-opdrachten opgeslagen in een onbewerkt tekstbestand onder het opgegeven pad.

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

### 14. Kopieer item

In PowerShell 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 opgeslagen. Dit werkt als volgt:

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

### 15. Get-ChildItem

U kunt de opdracht **Get-ChildItem** gebruiken om items uit een of meer opslaglocaties op te halen. Als er subelementen zijn, worden deze ook weergegeven. Deze opdracht geeft standaard de kenmerken, de tijdstempel van de laatste wijziging, de bestandsgrootte en de naam van het element weer. Als een opslaglocatie leeg is, wordt de uitvoer weggelaten.

```shell
Get-ChildItem -Path C:\example
```

De attributen worden weergegeven onder de regel ‘Mode’. De volgende eigenschappen komen vaak voor:

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

### 16. Set-AuthenticodeSignature

Om uw bestanden te beveiligen, kunt u ze voorzien van een Authenticode-handtekening met behulp van de opdracht **Set-AuthenticodeSignature**. Dit werkt echter alleen voor bestanden die het Subject Interface Package (SIP) ondersteunen.

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

### 17. Item oproepen

Om de standaardactie uit te voeren die aan een specifiek bestand is gekoppeld, biedt **Invoke-Item** de eenvoudigste methode. Deze opdracht zorgt er bijvoorbeeld voor dat een uitvoerbaar bestand direct wordt uitgevoerd of dat een documentbestand in de standaardtoepassing wordt geopend. In dit voorbeeld wordt het bestand standaard in Microsoft Word geopend:

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

### 18. Start-Job

Om een achtergrondtaak op uw lokale computer te starten, kunt u het daarvoor bestemde commando gebruiken. Met **Start-Job** kunt u een specifiek commando op de achtergrond uitvoeren, zonder interactie met de huidige sessie.

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

## Voer acties uit met deze PowerShell-opdrachten

Hoewel de eerdere PowerShell-opdrachten voornamelijk gericht waren op het geven van overzichten, kunt u ook verschillende acties uitvoeren met behulp van de juiste cmdlets, waardoor de productiviteit van uw systeem wordt verbeterd. De volgende PowerShell-opdrachten stroomlijnen uw workflow.

### 19. Duidelijke 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 uitgevoerd:

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

### 20. ForEach-Object

Met de opdracht **ForEach-Object** kunt u een bewerking uitvoeren op alle elementen in een verzameling invoerobjecten. In dit voorbeeld delen we drie gehele getallen in een array door 10:

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

### 21. Objecten vergelijken

Om het handmatig vergelijken van verschillende sets objecten te vermijden, kunt u de cmdlet **Compare-Object** gebruiken. Deze opdracht genereert een rapport waarin de verschillen tussen de records worden gemarkeerd. Het eerste record dient als referentieobject en het tweede record als verschilobject. U kunt aangeven welke factoren moeten worden vergeleken. Als deze informatie wordt weggelaten, worden alleen de tekenreeksresultaten vergeleken. De uitvoer is onderverdeeld in eigenschappen die alleen in het referentieobject voorkomen (&lt;) en eigenschappen die alleen in het verschilobject voorkomen (&gt;). In dit voorbeeld bevat document1.txt de waarden Berlijn, Londen en Parijs. Document2.txt bevat Berlijn, Wenen en Amsterdam.

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

Inhoud die in beide documenten voorkomt (in dit geval ‘Berlijn’) wordt standaard niet weergegeven.

### 22. Nieuw object

Een van de handigste PowerShell-opdrachten is **New-Object**. U kunt deze cmdlet gebruiken om een object uit het .NET-framework of een Component Object Model (COM) te instantiëren. Als u bijvoorbeeld een System.Version-object wilt maken met ‘1.2.3.4’ als constructiestring, voert u de opdracht als volgt uit:

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

### 23. Select-Object

Gebruik de opdracht **Select-Object** om een object of een groep objecten te selecteren die de door u gedefinieerde eigenschappen hebben. De parameters die u hiervoor kunt opgeven, zijn als volgt:

- Eerste
- Achternaam
- Uniek
- Overslaan
- Index

In het volgende voorbeeld gebruiken we de PowerShell-opdrachten Get-Process en Sort-Object om de drie processen weer te geven die op het moment van invoer het meeste geheugen verbruiken.

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

### 24. Alias instellen

Windows-snelkoppelingen zijn handig om acties nog sneller uit te voeren. PowerShell biedt deze optie ook. U kunt de cmdlet **Set-Alias** gebruiken om een snelkoppeling voor verschillende PowerShell-opdrachten te definiëren. In het volgende voorbeeld maken we de alias ‘ci’ voor de opdracht Get-ChildItem voor de huidige sessie.

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

### 25. Locatie instellen

Gebruik de opdracht **Set-Location** om de locatie van het werkgeheugen te wijzigen. Mogelijke nieuwe locaties zijn mappen, submappen, registerlocaties of providerpaden. In het volgende voorbeeld geven we de C:-schijf op als de huidige opslaglocatie:

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

### 26. Set-Service

U kunt de cmdlet **Set-Service** gebruiken om met een service te communiceren en deze te starten, stoppen of pauzeren. Het is ook mogelijk om de eigenschappen van de service te wijzigen. In het volgende voorbeeld wijzigen we de weergavenaam van een service van ‘New Workstation’ in ‘Old Workstation’.

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

### 27. Tijdzone instellen

Om de tijdzone van uw systeem te wijzigen, is het commando **Set-TimeZone** de juiste keuze. Om de gecoördineerde wereldtijd als nieuwe systeemtijd in te stellen, gebruikt u dit commando:

```shell
Set-TimeZone -Id "UTC"
```

### 28. Computer opnieuw opstarten

U kunt het besturingssysteem op uw lokale computer of een externe computer opnieuw opstarten met behulp van de juiste PowerShell-opdracht, genaamd **Restart-Computer**. Deze opdracht kan als volgt worden uitgevoerd:

Voor uw lokale computer:

```shell
Restart-Computer
```

Voor bepaalde computers in uw netwerk:

```shell
Restart-Computer -ComputerName Server01, Server03
```

### 29. Service opnieuw starten

Om een service te stoppen en opnieuw te starten met behulp van PowerShell-opdrachten, is **Restart-Service** de juiste cmdlet. U kunt bijvoorbeeld alle services die beginnen met ‘Net’ opnieuw starten:

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

### 30. Prullenbak leegmaken

De prullenbak moet regelmatig worden geleegd, wat ook mogelijk is via PowerShell. De opdracht hiervoor is **Clear-RecycleBin**.

```shell
Clear-RecycleBin
```

### 31. Get-ComputerInfo

De opdracht **Get-ComputerInfo** wordt gebruikt om systeem- en besturingssysteemeigenschappen op te halen.

```shell
Get-ComputerInfo
```

### 32. Item verplaatsen

Wanneer u een item van de ene locatie naar de andere wilt verplaatsen, kunt u verschillende PowerShell-opdrachten gebruiken. De meest gebruikte optie is echter **Move-Item**. In dit voorbeeld verplaatsen we het bestand old.txt van de schijf C: naar de map D:\\Temp en hernoemen we het tegelijkertijd naar new.txt.

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

## Monitoring en debugging met de juiste PowerShell-opdrachten

PowerShell-opdrachten die systeemmonitoring en -controle mogelijk maken, zijn bijzonder waardevol, vooral bij het testen van de prestaties van een nieuw netwerk onder realistische omstandigheden. De volgende PowerShell-opdrachten zijn bijzonder nuttig voor deze doeleinden.

### 33. Debug-proces

Debuggen is een belangrijk proces om ervoor te zorgen dat alle instellingen en processen foutloos verlopen. Hiervoor moet u de juiste debuggers downloaden en configureren. Zodra dit is gebeurd, gebruikt u de opdracht **Debug-Process**. In het volgende voorbeeld gebruiken we een debugger voor de Explorer:

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

Om meerdere processen tegelijkertijd te debuggen, kunt u ze eenvoudig onderverdelen met komma’s.

### 34. Enable-PSBreakpoint

Gebruik de opdracht **Enable-PSBreakpoint** om bepaalde breekpunten te activeren. Hierdoor wordt de waarde van de cmdlet vanuit technisch oogpunt ingesteld op ‘true’. Gebruik deze PowerShell-opdrachten om alle breekpunten in de huidige sessie te activeren:

```shell
Get-PSBreakpoint | Enable-PSBreakpoint
```

Gebruik deze opdracht om breekpunten te activeren met behulp van hun ID:

```shell
Enable-PSBreakpoint -ID 0, 3, 4
```

### 35. PSBreakpoint uitschakelen

Om PowerShell-breekpunten weer te deactiveren, is de geschikte cmdlet hiervoor **Disable-PSBreakpoint**. Technisch gezien wordt de waarde van de opdracht Enable-PSBreakpoint ingesteld op ‘false’. Om een breekpunt met ID 0 te deactiveren, voert u het volgende in:

```shell
Disable-PSBreakpoint -Id 0
```

### 36. Get-Counter

Voor Windows-apparaten kunt u hun prestatiegegevens ophalen met PowerShell. 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:

```shell
Get-Counter -ListSet *
```

### 37. Start-Slaapstand

Het pauzeren van een script of sessie kan cruciaal zijn, vooral tijdens situaties waarin het systeem overbelast is. PowerShell biedt hiervoor de opdracht **Start-Sleep**, waarmee u kunt aangeven hoe lang activiteiten moeten worden gepauzeerd. In het volgende voorbeeld wordt de uitvoering twee seconden gepauzeerd:

```shell
Start-Sleep -Seconds 2
```

### 38. Test-Pad

Gebruik de opdracht **Test-Path** om te controleren of alle elementen van een specifiek pad aanwezig zijn. De mogelijke resultaten zijn ‘True’ of ‘False’.

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

### 39. Testverbinding

U kunt ook de netwerkconnectiviteit binnen uw netwerk beoordelen met behulp van PowerShell. Dit doet u door ICMP-echo-verzoekpakketten naar bepaalde ontvangers te sturen via de opdracht **Test-Connection**, die reacties opvraagt via het Internet Control Message Protocol (ICMP). In ons voorbeeld sturen we een verzoek naar Server02 via het IPv6-protocol.

```shell
Test-Connection -TargetName Server02 -IPv6
```

### 40. Get-WinEvent

Wanneer u een of meer gebeurtenislogboeken wilt bekijken, kunt u verschillende PowerShell-opdrachten gebruiken. De meest praktische cmdlet voor dit doel is **Get-WinEvent**. Om alle logboeken van uw lokale computer op te halen, kunt u de volgende opdracht gebruiken:

```shell
Get-WinEvent -ListLog *
```


This is a markdown version of: [https://www.ionos.com/nl-be/digitalguide/server/configuratie/powershell-opdrachten/](https://www.ionos.com/nl-be/digitalguide/server/configuratie/powershell-opdrachten/) for AI/LLM consumption.