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.
Get-Module -Allshell2. 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.
Get-Commandshell3. 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.
Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]shell4. 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.
Get-Processshell5. 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.
Get-Serviceshell6. 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:
Stop-Process -Name "processname"shellStop-Process -Id 3582 -Confirm -PassThrushellMet -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:
Get-Command | ConvertTo-Html > c:\temp\AllCommands.htmlshell8. 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:
Get-Date | ConvertTo-Xmlshell9. 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:
Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }shell10. 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:
Get-HistoryshellMet deze specificatie roept u alleen de laatste tien PowerShell-opdrachten op:
Get-History -Count 10shell11. Geschiedenis wissen
U kunt ook de lijst met gebruikte PowerShell-opdrachten verwijderen. Gebruik de cmdlet Clear-History om alle vermeldingen te verwijderen:
Clear-HistoryshellOm 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’.
Clear-History -Command *Help*, *Syntaxshell12. 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.
Add-Historyshell13. 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.
Get-Process | Out-File -FilePath .\Process.txtshell14. 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:
Copy-Item "C:\folder1\file.txt" -Destination "C:\folder2"shell15. 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.
Get-ChildItem -Path C:\exampleshellDe 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.
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $certshell17. 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:
Invoke-Item "C:\Test\example.doc"shell18. 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.
Start-Job -ScriptBlock { Get-Process -Name pwsh }shellVoer 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:
Clear-Content C:\Temp\example.txtshell20. 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:
10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10shell21. 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 (<) en eigenschappen die alleen in het verschilobject 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 <==shellInhoud 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:
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"shell23. 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.
Get-Process | Sort-Object -Property WS | Select-Object -Last 3shell24. 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.
PS> Set-Alias -Name ci -Value Get-ChildItem
PS> Get-Alias -Name cishell25. 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:
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>shell26. 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’.
Set-Service -Name New Workstation -DisplayName "Old Workstation"shell27. 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:
Set-TimeZone -Id "UTC"shell28. 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:
Restart-ComputershellVoor bepaalde computers in uw netwerk:
Restart-Computer -ComputerName Server01, Server03shell29. 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:
PS C:\> Restart-Service -DisplayName "net*"shell30. Prullenbak leegmaken
De prullenbak moet regelmatig worden geleegd, wat ook mogelijk is via PowerShell. De opdracht hiervoor is Clear-RecycleBin.
Clear-RecycleBinshell31. Get-ComputerInfo
De opdracht Get-ComputerInfo wordt gebruikt om systeem- en besturingssysteemeigenschappen op te halen.
Get-ComputerInfoshell32. 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.
Move-Item -Path C:\old.txt -Destination D:\Temp\new.txtshellMonitoring 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:
PS C:\> Debug-Process -Name "Explorer"shellOm 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:
Get-PSBreakpoint | Enable-PSBreakpointshellGebruik deze opdracht om breekpunten te activeren met behulp van hun ID:
Enable-PSBreakpoint -ID 0, 3, 4shell35. 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:
Disable-PSBreakpoint -Id 0shell36. 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:
Get-Counter -ListSet *shell37. 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:
Start-Sleep -Seconds 2shell38. 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’.
Test-Path -Path "C:\Documents and Settings\user"
Falseshell39. 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.
Test-Connection -TargetName Server02 -IPv6shell40. 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:
Get-WinEvent -ListLog *shell