PowerShell-Essentials: Deine 40 wichtigsten Befehle im Überblick
Mit den richtigen PowerShell-Befehlen nutzt du Module deutlich effizienter. Die verschiedenen Cmdlets sind logisch aufgebaut und lassen sich flexibel um Parameter ergänzen. Wir zeigen dir die 40 wichtigsten PowerShell-Commands, damit du dein System oder Netzwerk optimal verwaltest.
Was sind PowerShell-Commands?
Die PowerShell ist seit Windows 7 fix integriert und erlaubt es dir, Befehle einzugeben, die direkt vom System ausgeführt werden. Neben den klassischen cmd-Befehlen gibt es zahlreiche spezifische Commands oder Cmdlets, die nur die PowerShell versteht. Diese Cmdlets setzen sich aus einem Verb und einem Substantiv zusammen, getrennt durch einen Bindestrich. Mit optionalen Parametern, die nach einem Leerzeichen folgen, lassen sich die PowerShell-Commands präzisieren. Die PowerShell wird längst nicht mehr nur in der Administration, sondern auch massiv in der Entwicklung eingesetzt. Wir haben die wichtigsten der hunderten vorinstallierten Befehle für dich zusammengefasst.
Die wichtigsten PowerShell-Befehle im Überblick
Mit PowerShell-Befehlen erledigst du komplexe Administrationsaufgaben mit nur wenigen Tastenschlägen. Die folgenden Basisbefehle wirst du im Alltag vermutlich am häufigsten brauchen. Sie bieten dir eine Übersicht der Netzwerkstruktur, listen verfügbare Commands auf, unterstützen bei Sicherheits-Settings oder erstellen Analysen. Besonders wichtig sind dabei diese Befehle:
1. Get-Module -All
Um dir einen Überblick über sämtliche importierten PowerShell-Module zu verschaffen, nutzt du den Command Get-Module -All.
Get-Module -Allshell2. Get-Command
Es gibt unzählige vordefinierte Befehle. Wenn du wissen willst, welche PowerShell-Commands dir aktuell zur Verfügung stehen, hilft Get-Command. Er listet alle Aktionen samt Kurzerklärung zum jeweiligen Cmdlet auf – das gilt auch für nachträglich installierte Module.
Get-Commandshell3. Get-Help
Die Liste von Get-Command ist ein guter Start, aber wenn du tiefergehende Details zu Syntax und Optionen eines Befehls brauchst, hilft Get-Help weiter. Das Cmdlet greift auf die lokalen Hilfedateien zu. Kombiniere Get-Help einfach mit dem gesuchten Befehl.
Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]shell4. Get-Process
Oft muss es schnell gehen: Mit Get-Process siehst du sofort alle aktiven Anwendungen und Prozesse auf deinem System. Wenn du den Befehl auf eine spezifische App einschränkst, erhältst du detaillierte Infos dazu.
Get-Processshell5. Get-Service
Der Befehl Get-Service ähnelt Get-Process, liefert dir aber Informationen zu allen aktiven Diensten. Du kannst die Abfrage auch auf bestimmte Dienste oder Gruppen einschränken.
Get-Serviceshell6. Stop-Process
Du kannst Prozesse auch direkt über die Shell beenden. Mit Stop-Process stoppst du Anwendungen via Name, ID oder andere Merkmale. Ein Beispiel dazu:
Stop-Process -Name "prozessname"shellStop-Process -Id 3582 -Confirm -PassThrushellDer Parameter -Confirm fordert eine Bestätigung an, während -PassThru eine Rückmeldung über den angehaltenen Prozess liefert.
7. ConvertTo-HTML
Für eine saubere Dokumentation oder Fehleranalyse ist eine übersichtliche Darstellung Gold wert. Mit ConvertTo-HTML exportierst du den Output deiner PowerShell-Commands in eine HTML-Datei. So werden Infos in einem lesbaren Spaltenformat aufbereitet:
Get-Command | ConvertTo-Html > c:\temp\AllCommands.htmlshell8. 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-Xmlshell9. Where-Object
Mit Where-Object filterst du die Ergebnisse deiner Cmdlets. Da Befehle oft massenweise Daten liefern, hilft dir dieser Filter, nur das Relevante via Pipe herauszufiltern. Suchst du etwa nur Dienste, die heuer aktualisiert wurden, geht das so:
Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }shell10. Get-History
Um alle Befehle einer aktuellen Sitzung zu sehen, nutzt du Get-History. So listest du alle getätigten Eingaben auf:
Get-HistoryshellMit diesem Zusatz rufst du nur die letzten zehn Befehle ab:
Get-History -Count 10shell11. 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-HistoryshellWillst du nur spezifische 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*, *Syntaxshell12. Add-History
Es ist zudem möglich, Befehle zu einer Sitzung hinzuzufügen, um sie später wieder direkt aufzurufen. Das passende Cmdlet ist Add-History.
Add-Historyshell13. Out-File
Willst du das Ergebnis deiner Arbeit dauerhaft sichern? Out-File speichert den Output deiner PowerShell-Befehle als Textdatei unter dem gewünschten Pfad ab.
Get-Process | Out-File -FilePath .\Process.txtshell14. Copy-Item
In der PowerShell lassen sich Elemente ganz einfach kopieren und an einem neuen Ort ablegen. Nutze dafür Copy-Item unter Angabe des Zielverzeichnisses:
Copy-Item "C:\Ordner1\Datei.txt" -Destination "C:\Ordner2"shell15. Get-ChildItem
Mit Get-ChildItem rufst du Inhalte an einem Speicherort ab. Falls Unterverzeichnisse existieren, werden diese ebenfalls angezeigt. Standardmäßig siehst du Attribute, Änderungsdatum, Größe und Name.
Get-ChildItem -Path C:\BeispielshellDie Attribute stehen unter „Mode“. Hier die gängigsten Kürzel:
- a (Archiv)
- d (Verzeichnis)
- h (versteckt)
- l (Link)
- r (schreibgeschützt)
- s (System)
16. Set-AuthenticodeSignature
Zum Schutz deiner Dateien kannst du diese via Set-AuthenticodeSignature mit einer Signatur versehen. Das klappt bei allen Dateien, die das Subject Interface Package (SIP) unterstützen.
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $certshell17. Invoke-Item
Um die Standardaktion für eine Datei auszulösen, ist Invoke-Item der schnellste Weg. So öffnet sich ein Dokument direkt in der verknüpften App oder eine EXE-Datei wird gestartet. Hier etwa der Aufruf in Microsoft Word:
Invoke-Item "C:\Test\Beispiel.doc"shell18. Start-Job
Für Hintergrundaufgaben auf deinem Rechner gibt es den Befehl Start-Job. Damit führst du Befehle aus, ohne dass diese die aktuelle Sitzung blockieren.
Start-Job -ScriptBlock { Get-Process -Name pwsh }shellProduktiv arbeiten mit diesen PowerShell-Commands
Nachdem wir die Übersichtsbefehle 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.txtshell20. ForEach-Object
Mit ForEach-Object führst du eine Aktion für jedes Element einer Liste aus. Hier teilen wir beispielhaft drei Zahlen in einem Array durch 10:
10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10shell21. Compare-Object
Um Objekte nicht mühsam händisch vergleichen zu müssen, nutzt du Compare-Object. Das Cmdlet erstellt einen Bericht über die Unterschiede. Das erste Objekt dient als Referenz, das zweite als Vergleich. Ohne spezifische Parameter werden einfach die Zeichenfolgen abgeglichen. Symbole wie <== oder ==> zeigen an, wo welcher Wert vorkommt. Beispiel: Vergleich von zwei Textdateien mit Städtenamen.
Compare-Object -ReferenceObject (Get-Content -Path C:\Test\Dokument1.txt) -DifferenceObject (Get-Content -Path C:\Test\Dokument2.txt)
InputObject SideIndicator
--------------- -----------------
Wien ==>
Amsterdam ==>
London <==
Paris <==shellIdentische Inhalte werden dabei standardmäßig ausgeblendet.
22. New-Object
Einer der mächtigsten 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"shell23. 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 kombiniert mit Get-Process, um die drei Prozesse mit dem höchsten RAM-Verbrauch anzuzeigen:
Get-Process | Sort-Object -Property WS | Select-Object -Last 3shell24. Set-Alias
Kürzel sparen Zeit. Mit Set-Alias definierst du eigene Shortcuts für PowerShell-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 cishell25. Set-Location
Um das Arbeitsverzeichnis zu wechseln, nutzt du Set-Location. Das funktioniert für Ordner, Registry-Pfade oder Provider-Speicherorte. Beispiel für den Wechsel auf Laufwerk C::
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>shell26. Set-Service
Mit Set-Service steuerst du Dienste – egal ob starten, stoppen oder pausieren. Auch Eigenschaften lassen sich ändern, wie hier der Anzeigename eines Dienstes:
Set-Service -Name Neue Workstation -DisplayName "Alte Workstation"shell27. Set-TimeZone
Die Systemzeit anpassen? Set-TimeZone macht es möglich. Hier stellen wir die Zeit auf UTC (koordinierte Weltzeit) um:
Set-TimeZone -Id "UTC"shell28. Restart-Computer
Starte deinen lokalen PC oder einen Remote-Rechner einfach via PowerShell neu. Der Befehl Restart-Computer wird so verwendet:
Für den eigenen Rechner:
Restart-ComputershellFür andere Computer im Netzwerk:
Restart-Computer -ComputerName Server01, Server03shell29. 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*"shell30. Clear-RecycleBin
Halte dein System sauber: Mit Clear-RecycleBin leerst du den Papierkorb direkt über die Konsole.
Clear-RecycleBinshell31. Get-ComputerInfo
Du brauchst Details zu Hardware oder Betriebssystem? Get-ComputerInfo liefert dir die komplette Übersicht.
Get-ComputerInfoshell32. Move-Item
Um Dateien zu verschieben, ist Move-Item das Werkzeug der Wahl. Hier verschieben wir alt.txt nach Temp und benennen sie gleichzeitig in neu.txt um:
Move-Item -Path C:\alt.txt -Destination D:\Temp\neu.txtshellMonitoring und Debugging mit PowerShell
Wenn es um Überwachung und Fehlersuche geht, zeigt die PowerShell ihre wahre Stärke. Besonders beim Testen neuer Netzwerk-Setups sind diese Commands unverzichtbar.
33. Debug-Process
Debugging hilft, Fehlerquellen 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"shellMehrere Prozesse trennst du einfach durch Kommata.
34. Enable-PSBreakpoint
Um Breakpoints (Haltepunkte) in Skripten zu aktivieren, nutzt du Enable-PSBreakpoint. So aktivierst du alle Haltepunkte der aktuellen Sitzung:
Get-PSBreakpoint | Enable-PSBreakpointshellOder gezielt über die ID:
Enable-PSBreakpoint -ID 0, 3, 4shell35. Disable-PSBreakpoint
Haltepunkte schaltest du mit Disable-PSBreakpoint wieder aus. Um etwa den Breakpoint mit der ID 0 zu deaktivieren, gibst du Folgendes ein:
Disable-PSBreakpoint -Id 0shell36. Get-Counter
Leistungsdaten deiner Windows-Geräte rufst du mit Get-Counter ab – lokal oder remote. Hier die Abfrage für den eigenen Rechner:
Get-Counter -ListSet *shell37. Start-Sleep
Manchmal muss ein Skript kurz pausieren, etwa um Systemlast abzufangen. Start-Sleep legt eine Pause ein. Hier stoppt die Ausführung für zwei Sekunden:
Start-Sleep -Seconds 2shell38. Test-Path
Prüfe mit Test-Path, ob ein Pfad oder eine Datei tatsächlich existiert. Du erhältst als Antwort „True“ oder „False“.
Test-Path -Path "C:\Documents and Settings\Nutzer"
Falseshell39. Test-Connection
Netzwerkverbindungen prüfst du mit Test-Connection. Der Befehl schickt ein ICMP-Echo (Ping) an den Zielrechner. Hier eine Anfrage an Server02 via IPv6-Protokoll:
Test-Connection -TargetName Server02 -IPv6shell40. Get-WinEvent
Ein Blick in die Ereignisprotokolle gefällig? Das praktischste Cmdlet dafür ist Get-WinEvent. So siehst du alle Protokolle deines lokalen Rechners:
Get-WinEvent -ListLog *shell