Mit den richtigen Power­Shell-Befehlen nutzt du Module deutlich ef­fi­zi­en­ter. Die ver­schie­de­nen Cmdlets sind logisch aufgebaut und lassen sich flexibel um Parameter ergänzen. Wir zeigen dir die 40 wich­tigs­ten Power­Shell-Commands, damit du dein System oder Netzwerk optimal ver­wal­test.

Was sind Power­Shell-Commands?

Die Power­Shell ist seit Windows 7 fix in­te­griert und erlaubt es dir, Befehle ein­zu­ge­ben, die direkt vom System aus­ge­führt werden. Neben den klas­si­schen cmd-Befehlen gibt es zahl­rei­che spe­zi­fi­sche Commands oder Cmdlets, die nur die Power­Shell versteht. Diese Cmdlets setzen sich aus einem Verb und einem Sub­stan­tiv zusammen, getrennt durch einen Bin­de­strich. Mit op­tio­na­len Pa­ra­me­tern, die nach einem Leer­zei­chen folgen, lassen sich die Power­Shell-Commands prä­zi­sie­ren. Die Power­Shell wird längst nicht mehr nur in der Ad­mi­nis­tra­ti­on, sondern auch massiv in der Ent­wick­lung ein­ge­setzt. Wir haben die wich­tigs­ten der hunderten vor­in­stal­lier­ten Befehle für dich zu­sam­men­ge­fasst.

Die wich­tigs­ten Power­Shell-Befehle im Überblick

Mit Power­Shell-Befehlen erledigst du komplexe Ad­mi­nis­tra­ti­ons­auf­ga­ben mit nur wenigen Tas­ten­schlä­gen. Die folgenden Ba­sis­be­feh­le wirst du im Alltag ver­mut­lich am häu­figs­ten brauchen. Sie bieten dir eine Übersicht der Netz­werk­struk­tur, listen ver­füg­ba­re Commands auf, un­ter­stüt­zen bei Si­cher­heits-Settings oder erstellen Analysen. Besonders wichtig sind dabei diese Befehle:

1. Get-Module -All

Um dir einen Überblick über sämtliche im­por­tier­ten Power­Shell-Module zu ver­schaf­fen, nutzt du den Command Get-Module -All.

Get-Module -All
shell

2. Get-Command

Es gibt unzählige vor­de­fi­nier­te Befehle. Wenn du wissen willst, welche Power­Shell-Commands dir aktuell zur Verfügung stehen, hilft Get-Command. Er listet alle Aktionen samt Kurz­erklä­rung zum je­wei­li­gen Cmdlet auf – das gilt auch für nach­träg­lich in­stal­lier­te Module.

Get-Command
shell

3. Get-Help

Die Liste von Get-Command ist ein guter Start, aber wenn du tie­fer­ge­hen­de Details zu Syntax und Optionen eines Befehls brauchst, hilft Get-Help weiter. Das Cmdlet greift auf die lokalen Hil­fe­da­tei­en zu. Kom­bi­nie­re Get-Help einfach mit dem gesuchten Befehl.

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

4. Get-Process

Oft muss es schnell gehen: Mit Get-Process siehst du sofort alle aktiven An­wen­dun­gen und Prozesse auf deinem System. Wenn du den Befehl auf eine spe­zi­fi­sche App ein­schränkst, erhältst du de­tail­lier­te Infos dazu.

Get-Process
shell

5. Get-Service

Der Befehl Get-Service ähnelt Get-Process, liefert dir aber In­for­ma­tio­nen zu allen aktiven Diensten. Du kannst die Abfrage auch auf bestimmte Dienste oder Gruppen ein­schrän­ken.

Get-Service
shell

6. Stop-Process

Du kannst Prozesse auch direkt über die Shell beenden. Mit Stop-Process stoppst du An­wen­dun­gen via Name, ID oder andere Merkmale. Ein Beispiel dazu:

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

Der Parameter -Confirm fordert eine Be­stä­ti­gung an, während -PassThru eine Rück­mel­dung über den an­ge­hal­te­nen Prozess liefert.

7. ConvertTo-HTML

Für eine saubere Do­ku­men­ta­ti­on oder Feh­ler­ana­ly­se ist eine über­sicht­li­che Dar­stel­lung Gold wert. Mit ConvertTo-HTML ex­por­tierst du den Output deiner Power­Shell-Commands in eine HTML-Datei. So werden Infos in einem lesbaren Spal­ten­for­mat auf­be­rei­tet:

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

8. ConvertTo-Xml

Ähnlich verfährst du, wenn du eine XML-Struktur eines Objekts benötigst. Das erledigt der Befehl ConvertTo-Xml. Hier ein Beispiel, um das aktuelle Datum in XML zu wandeln:

Get-Date | ConvertTo-Xml
shell

9. Where-Object

Mit Where-Object filterst du die Er­geb­nis­se deiner Cmdlets. Da Befehle oft mas­sen­wei­se Daten liefern, hilft dir dieser Filter, nur das Relevante via Pipe her­aus­zu­fil­tern. Suchst du etwa nur Dienste, die heuer ak­tua­li­siert wurden, geht das so:

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

10. Get-History

Um alle Befehle einer aktuellen Sitzung zu sehen, nutzt du Get-History. So listest du alle ge­tä­tig­ten Eingaben auf:

Get-History
shell

Mit diesem Zusatz rufst du nur die letzten zehn Befehle ab:

Get-History -Count 10
shell

11. Clear-History

Du kannst die Liste der genutzten Befehle natürlich auch wieder löschen. Um die gesamte History zu leeren, verwende das Cmdlet Clear-History:

Clear-History
shell

Willst du nur spe­zi­fi­sche Einträge entfernen, füge Parameter hinzu. Hier werden etwa alle Befehle gelöscht, die „Help“ enthalten oder auf „Syntax“ enden:

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

12. Add-History

Es ist zudem möglich, Befehle zu einer Sitzung hin­zu­zu­fü­gen, um sie später wieder direkt auf­zu­ru­fen. Das passende Cmdlet ist Add-History.

Add-History
shell

13. Out-File

Willst du das Ergebnis deiner Arbeit dauerhaft sichern? Out-File speichert den Output deiner Power­Shell-Befehle als Textdatei unter dem ge­wünsch­ten Pfad ab.

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

14. Copy-Item

In der Power­Shell lassen sich Elemente ganz einfach kopieren und an einem neuen Ort ablegen. Nutze dafür Copy-Item unter Angabe des Ziel­ver­zeich­nis­ses:

Copy-Item "C:\Ordner1\Datei.txt" -Destination "C:\Ordner2"
shell

15. Get-ChildItem

Mit Get-ChildItem rufst du Inhalte an einem Spei­cher­ort ab. Falls Un­ter­ver­zeich­nis­se exis­tie­ren, werden diese ebenfalls angezeigt. Stan­dard­mä­ßig siehst du Attribute, Än­de­rungs­da­tum, Größe und Name.

Get-ChildItem -Path C:\Beispiel
shell

Die Attribute stehen unter „Mode“. Hier die gän­gigs­ten Kürzel:

  • a (Archiv)
  • d (Ver­zeich­nis)
  • h (versteckt)
  • l (Link)
  • r (schreib­ge­schützt)
  • s (System)

16. Set-Au­then­ti­code­Si­gna­tu­re

Zum Schutz deiner Dateien kannst du diese via Set-Au­then­ti­code­Si­gna­tu­re mit einer Signatur versehen. Das klappt bei allen Dateien, die das Subject Interface Package (SIP) un­ter­stüt­zen.

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

17. Invoke-Item

Um die Stan­dard­ak­ti­on für eine Datei aus­zu­lö­sen, ist Invoke-Item der schnells­te Weg. So öffnet sich ein Dokument direkt in der ver­knüpf­ten App oder eine EXE-Datei wird gestartet. Hier etwa der Aufruf in Microsoft Word:

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

18. Start-Job

Für Hin­ter­grund­auf­ga­ben auf deinem Rechner gibt es den Befehl Start-Job. Damit führst du Befehle aus, ohne dass diese die aktuelle Sitzung blo­ckie­ren.

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

Produktiv arbeiten mit diesen Power­Shell-Commands

Nachdem wir die Über­sichts­be­feh­le geklärt haben, kommen wir nun zu den Aktionen. Diese Cmdlets helfen dir dabei, dein System aktiv zu verwalten und produktiv zu nutzen.

19. Clear-Content

Willst du nur den Inhalt einer Datei löschen, das File selbst aber behalten? Dann ist Clear-Content ideal. Die Datei bleibt bestehen, wird aber komplett geleert:

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

20. ForEach-Object

Mit ForEach-Object führst du eine Aktion für jedes Element einer Liste aus. Hier teilen wir bei­spiel­haft drei Zahlen in einem Array durch 10:

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

21. Compare-Object

Um Objekte nicht mühsam händisch ver­glei­chen zu müssen, nutzt du Compare-Object. Das Cmdlet erstellt einen Bericht über die Un­ter­schie­de. Das erste Objekt dient als Referenz, das zweite als Vergleich. Ohne spe­zi­fi­sche Parameter werden einfach die Zei­chen­fol­gen ab­ge­gli­chen. Symbole wie <== oder ==> zeigen an, wo welcher Wert vorkommt. Beispiel: Vergleich von zwei Text­da­tei­en mit Städ­te­na­men.

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

Iden­ti­sche Inhalte werden dabei stan­dard­mä­ßig aus­ge­blen­det.

22. New-Object

Einer der mäch­tigs­ten Befehle ist New-Object. Damit erstellst du Instanzen von .NET Framework- oder COM-Objekten. Hier ein Beispiel für ein System.Version-Objekt:

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

23. Select-Object

Mit Select-Object pickst du dir gezielt Objekte oder Gruppen heraus, die bestimmte Kriterien erfüllen. Nutze Parameter wie:

  • First
  • Last
  • Unique
  • Skip
  • Index

Hier kom­bi­niert mit Get-Process, um die drei Prozesse mit dem höchsten RAM-Verbrauch an­zu­zei­gen:

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

24. Set-Alias

Kürzel sparen Zeit. Mit Set-Alias de­fi­nierst du eigene Shortcuts für Power­Shell-Befehle. Hier legen wir für die aktuelle Sitzung „ci“ als Alias für Get-ChildItem fest:

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

25. Set-Location

Um das Ar­beits­ver­zeich­nis zu wechseln, nutzt du Set-Location. Das funk­tio­niert für Ordner, Registry-Pfade oder Provider-Spei­cher­or­te. Beispiel für den Wechsel auf Laufwerk C::

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

26. Set-Service

Mit Set-Service steuerst du Dienste – egal ob starten, stoppen oder pausieren. Auch Ei­gen­schaf­ten lassen sich ändern, wie hier der An­zei­ge­na­me eines Dienstes:

Set-Service -Name Neue Workstation -DisplayName "Alte Workstation"
shell

27. Set-TimeZone

Die Sys­tem­zeit anpassen? Set-TimeZone macht es möglich. Hier stellen wir die Zeit auf UTC (ko­or­di­nier­te Weltzeit) um:

Set-TimeZone -Id "UTC"
shell

28. Restart-Computer

Starte deinen lokalen PC oder einen Remote-Rechner einfach via Power­Shell neu. Der Befehl Restart-Computer wird so verwendet:

Für den eigenen Rechner:

Restart-Computer
shell

Für andere Computer im Netzwerk:

Restart-Computer -ComputerName Server01, Server03
shell

29. Restart-Service

Dienste lassen sich mit Restart-Service in einem Rutsch beenden und neu starten. Hier ein Beispiel für alle Dienste, die mit „Net“ beginnen:

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

30. Clear-Re­cy­cle­Bin

Halte dein System sauber: Mit Clear-Re­cy­cle­Bin leerst du den Pa­pier­korb direkt über die Konsole.

Clear-RecycleBin
shell

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

Du brauchst Details zu Hardware oder Be­triebs­sys­tem? Get-Com­pu­ter­In­fo liefert dir die komplette Übersicht.

Get-ComputerInfo
shell

32. Move-Item

Um Dateien zu ver­schie­ben, ist Move-Item das Werkzeug der Wahl. Hier ver­schie­ben wir alt.txt nach Temp und benennen sie gleich­zei­tig in neu.txt um:

Move-Item -Path C:\alt.txt -Destination D:\Temp\neu.txt
shell

Mo­ni­to­ring und Debugging mit Power­Shell

Wenn es um Über­wa­chung und Feh­ler­su­che geht, zeigt die Power­Shell ihre wahre Stärke. Besonders beim Testen neuer Netzwerk-Setups sind diese Commands un­ver­zicht­bar.

33. Debug-Process

Debugging hilft, Feh­ler­quel­len in Prozessen zu finden. Nach dem Setup passender Debugger wendest du sie mit Debug-Process an. Hier am Beispiel des Explorers:

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

Mehrere Prozesse trennst du einfach durch Kommata.

34. Enable-PS­Break­point

Um Break­points (Hal­te­punk­te) in Skripten zu ak­ti­vie­ren, nutzt du Enable-PS­Break­point. So ak­ti­vierst du alle Hal­te­punk­te der aktuellen Sitzung:

Get-PSBreakpoint | Enable-PSBreakpoint
shell

Oder gezielt über die ID:

Enable-PSBreakpoint -ID 0, 3, 4
shell

35. Disable-PS­Break­point

Hal­te­punk­te schaltest du mit Disable-PS­Break­point wieder aus. Um etwa den Break­point mit der ID 0 zu de­ak­ti­vie­ren, gibst du Folgendes ein:

Disable-PSBreakpoint -Id 0
shell

36. Get-Counter

Leis­tungs­da­ten deiner Windows-Geräte rufst du mit Get-Counter ab – lokal oder remote. Hier die Abfrage für den eigenen Rechner:

Get-Counter -ListSet *
shell

37. Start-Sleep

Manchmal muss ein Skript kurz pausieren, etwa um Sys­tem­last ab­zu­fan­gen. Start-Sleep legt eine Pause ein. Hier stoppt die Aus­füh­rung für zwei Sekunden:

Start-Sleep -Seconds 2
shell

38. Test-Path

Prüfe mit Test-Path, ob ein Pfad oder eine Datei tat­säch­lich existiert. Du erhältst als Antwort „True“ oder „False“.

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

39. Test-Con­nec­tion

Netz­werk­ver­bin­dun­gen prüfst du mit Test-Con­nec­tion. Der Befehl schickt ein ICMP-Echo (Ping) an den Ziel­rech­ner. Hier eine Anfrage an Server02 via IPv6-Protokoll:

Test-Connection -TargetName Server02 -IPv6
shell

40. Get-WinEvent

Ein Blick in die Er­eig­nis­pro­to­kol­le gefällig? Das prak­tischs­te Cmdlet dafür ist Get-WinEvent. So siehst du alle Pro­to­kol­le deines lokalen Rechners:

Get-WinEvent -ListLog *
shell
Zum Hauptmenü