Was ist PowerShell? PowerShell ist eine Kommandozeile und Skriptsprache für die Verwaltung und Automatisierung von Computern. Du kannst damit Dateien durchsuchen, Prozesse prüfen, Berichte erstellen und wiederkehrende Arbeitsschritte als Skript speichern. PowerShell läuft unter Windows, Linux und macOS. Welche Verwaltungsaufgaben tatsächlich möglich sind, hängt vom Betriebssystem, den installierten Modulen und deinen Berechtigungen ab.
In diesem Beitrag lernst du die wichtigsten Bausteine kennen und probierst harmlose Befehle selbst aus. Eine ausführliche Schritt-für-Schritt-Anleitung für dein erstes Skript findest du anschließend unter Mit PowerShell starten.
Was ist PowerShell und wie funktioniert es?
PowerShell vereint drei Dinge: eine interaktive Shell für einzelne Befehle, eine Skriptsprache für wiederholbare Abläufe und eine Plattform, die sich durch Module erweitern lässt. Du gibst beispielsweise einen Befehl ein, um laufende Prozesse zu sehen. Wenn du dieselbe Auswertung regelmäßig brauchst, speicherst du mehrere Befehle in einer Textdatei mit der Endung .ps1.
Der wichtigste Unterschied zu einer rein textorientierten Kommandozeile: Viele PowerShell-Befehle geben Objekte mit Eigenschaften zurück. Ein Prozess hat etwa einen Namen und eine Prozess-ID. Du kannst diese Eigenschaften auswählen, nach ihnen filtern oder sie in eine Datei exportieren, ohne Textspalten mühsam zu zerlegen.
Get-Process |
Select-Object -First 5 -Property Name, Id, CPU
Das Zeichen | ist die Pipeline. Es übergibt die Ergebnisse von Get-Process an Select-Object. Die Eigenschaft CPU bezeichnet hier die bisher erfasste CPU-Zeit eines Prozesses, nicht seine momentane Auslastung in Prozent. Welche Prozesse erscheinen, hängt von deinem Rechner ab.
Was ist PowerShell im Vergleich zu CMD und Windows Terminal?
Die klassische Windows-Eingabeaufforderung (cmd.exe) und PowerShell nehmen beide Befehle entgegen. PowerShell besitzt jedoch eine eigene Skriptsprache, Cmdlets und die objektbasierte Pipeline. Externe Konsolenprogramme kannst du häufig weiterhin aus PowerShell starten; ihre Textausgabe wird dadurch aber nicht automatisch zu strukturierten PowerShell-Objekten.
Windows Terminal ist dagegen eine Terminalanwendung: Es stellt Fenster und Registerkarten bereit, in denen du PowerShell, die Eingabeaufforderung oder andere Shells öffnen kannst. Es ist selbst keine PowerShell-Version.
Windows PowerShell 5.1 oder PowerShell 7?
Auf Windows-Rechnern können zwei Varianten nebeneinander vorhanden sein. Windows PowerShell 5.1 startest du mit powershell.exe; die separat installierte PowerShell 7 mit pwsh. PowerShell 7 ersetzt 5.1 nicht. Sie eignet sich besonders für neue und plattformübergreifende Skripte. Manche älteren Windows-Verwaltungsmodule benötigen weiterhin 5.1 oder eine Kompatibilitätslösung. Prüfe daher vorhandene Skripte und Module, bevor du sie umstellst.
Mit diesen Variablen prüfst du die laufende Umgebung:
$PSVersionTable.PSVersion
$PSVersionTable.PSEdition
Bei PSEdition steht Desktop für Windows PowerShell 5.1 und Core für PowerShell 7. Die Microsoft-Anleitung zur Installation unter Windows beschreibt beide Varianten und die verfügbaren Installationswege.
PowerShell 7 installieren
Auf einem Windows-Client mit WinGet kannst du die Paket-ID prüfen und PowerShell 7 installieren:
winget search --id Microsoft.PowerShell --exact
winget install --id Microsoft.PowerShell --source winget
Öffne danach ein neues Terminal und starte pwsh. Für Windows Server, Linux und macOS findest du die jeweils passenden Wege in der Installationsübersicht von Microsoft. Eine Einführung in die Paketverwaltung bietet der Beitrag WinGet über die Kommandozeile verwenden.
Was kann PowerShell im Alltag?
Die Stärke von PowerShell liegt weniger in einem einzelnen Befehl als darin, dass sich kleine Schritte verbinden und später wiederholen lassen. Die folgenden Beispiele lesen Daten; sie ändern keine vorhandenen Dateien oder Systemeinstellungen.
Dateien finden und Eigenschaften auswerten
Dieses Beispiel zeigt Dateien im aktuellen Verzeichnis, die größer als zehn Megabyte sind:
Get-ChildItem -File |
Where-Object Length -gt 10MB |
Select-Object -Property Name, Length
Bleibt die Ausgabe leer, gibt es dort keine passende Datei. Mit Get-Location siehst du, in welchem Ordner du dich befindest. Ein zusätzlicher Parameter -Recurse würde auch Unterordner durchsuchen; bei großen Verzeichnisbäumen kann das deutlich länger dauern.
Prozesse und Dienste prüfen
Du kannst Prozessdaten nach einer Eigenschaft sortieren:
Get-Process |
Sort-Object -Property CPU -Descending |
Select-Object -First 10 -Property Name, Id, CPU
Das zeigt die Prozesse mit der höchsten bisher erfassten CPU-Zeit, nicht die aktuelle CPU-Last. Unter Windows liefert Get-Service zusätzlich Informationen zu Diensten. Zum Starten oder Stoppen eines Dienstes brauchst du je nach Dienst entsprechende Rechte; auf anderen Betriebssystemen unterscheiden sich verfügbare Befehle.
Einen kleinen CSV-Bericht erstellen
Wenn du ein Ergebnis weitergeben oder später erneut einlesen möchtest, kannst du es als CSV speichern. Dieser Befehl schreibt die Namen und IDs laufender Prozesse in eine Datei in deinem Benutzerverzeichnis:
$bericht = Join-Path -Path $HOME -ChildPath 'prozesse.csv'
Get-Process |
Select-Object -Property Name, Id |
Export-Csv -Path $bericht -NoTypeInformation -Encoding utf8
$bericht
Die letzte Zeile zeigt den Speicherort. Eine vorhandene Datei mit diesem Namen wird beim erneuten Ausführen überschrieben. Wenn du ältere Berichte behalten möchtest, ergänze einen Zeitstempel im Dateinamen. Zum Einlesen verwendest du Import-Csv -Path $bericht, solange die Variable in der aktuellen Sitzung noch gesetzt ist.
Cmdlets, Pipeline und Module verstehen
PowerShell-Befehle heißen häufig Cmdlets und folgen dem Muster Verb-Substantiv: Get-Process liest Prozesse, Get-ChildItem listet Elemente auf. Die Namen musst du nicht auswendig lernen:
Get-Command -Name *-Process
Get-Help Get-Process -Examples
Get-Process | Get-Member
Get-Command findet Befehle, Get-Help zeigt ihre Verwendung und Get-Member die Eigenschaften und Methoden der ausgegebenen Objekte. Falls die lokale Hilfe nur wenig Inhalt enthält, öffnet Get-Help Get-Process -Online die Onlinedokumentation.
Ein Modul bündelt weitere Befehle. Welche Module bereits verfügbar sind, prüfst du mit:
Get-Module -ListAvailable | Select-Object Name, Version
Für Microsoft 365, Azure, Active Directory oder SQL Server benötigst du oft zusätzliche Module und passende Zugriffsrechte. Installiere Module nur aus geprüften Quellen und beachte, für welche PowerShell-Version und Plattform sie vorgesehen sind. Ein installiertes Modul verleiht dir keine zusätzlichen Berechtigungen.
Ein häufiger Stolperstein bei der Pipeline: Format-Table ist für die Anzeige am Ende eines Befehls gedacht. Wenn du Daten noch filtern oder als CSV exportieren möchtest, verwende vorher Select-Object und Where-Object; formatiere erst die fertige Ausgabe.
Skripte, geplante Aufgaben und Remoting
Wiederholte Befehlsfolgen kannst du als .ps1-Datei speichern und unter Windows beispielsweise über die Aufgabenplanung regelmäßig starten. Plane dabei auch Fehlerbehandlung, Protokollierung, einen passenden Ausführungskontext und den Zugriff auf benötigte Dateien ein. Ein Skript, das interaktiv funktioniert, läuft als geplante Aufgabe nicht zwangsläufig mit denselben Rechten oder Pfaden.
Für die Verwaltung anderer Computer unterstützt PowerShell auch Remoting. Unter Windows wird dafür häufig WinRM verwendet; PowerShell 7 ermöglicht zudem Remoting über SSH zwischen unterstützten Plattformen. Beides setzt eine bewusst eingerichtete Gegenstelle, Netzwerkzugriff und Authentifizierung voraus. Öffne dafür keine Verwaltungsdienste pauschal ins Internet. Die Microsoft-Dokumentation zu SSH-Remoting erläutert Einrichtung und Grenzen.
PowerShell sicher verwenden
Weil PowerShell Aufgaben automatisiert, kann ein falscher Befehl auch viele Dateien oder Systeme gleichzeitig betreffen. Beginne mit lesenden Befehlen, begrenze den Umfang einer Änderung und prüfe ihre Wirkung. Manche Änderungsbefehle unterstützen -WhatIf:
Get-ChildItem -File -Filter '*.tmp' |
Remove-Item -WhatIf
Dieses Beispiel zeigt nur, welche passenden Dateien im aktuellen Ordner entfernt würden; es löscht sie nicht. -WhatIf steht nicht für jeden Befehl zur Verfügung. Kontrolliere die Hilfe des jeweiligen Befehls und teste Änderungen zunächst in einer geeigneten Umgebung.
- Führe PowerShell nur dann mit Administratorrechten aus, wenn die Aufgabe sie erfordert.
- Lies heruntergeladene Skripte vor dem Start und prüfe die Herkunft von Modulen.
- Speichere Passwörter und Zugangsschlüssel nicht im Klartext in Skripten oder Git-Repositories.
- Prüfe bei Automatisierung die Zielsysteme und protokolliere wichtige Änderungen.
Die Windows-Ausführungsrichtlinie steuert, unter welchen Bedingungen Skripte starten dürfen. Sie ist laut Microsoft keine Sicherheitsgrenze und ersetzt weder Berechtigungen noch die Prüfung des Skriptinhalts. Unter Linux und macOS wird diese Windows-Richtlinie nicht durchgesetzt.
Häufige Fragen: Was ist PowerShell?
Ist PowerShell nur etwas für Administratoren?
Nein. Auch für alltägliche Aufgaben wie das Suchen von Dateien oder das Erstellen eines Berichts ist sie nützlich. Verwaltungsbefehle für Dienste, Benutzer oder andere Computer können allerdings zusätzliche Rechte erfordern.
Muss ich programmieren können?
Für den Einstieg nicht. Beginne mit einzelnen Befehlen und der Hilfe. Variablen, Schleifen und Funktionen werden wichtig, wenn du Abläufe als Skript wiederholen möchtest.
Funktioniert jedes Skript auf Windows, Linux und macOS?
Nein. PowerShell 7 läuft auf allen drei Plattformen, aber Pfade, Systemdienste und verfügbare Module unterscheiden sich. Windows-spezifische Befehle, etwa für die Registry, funktionieren auf Linux oder macOS nicht unverändert.
Was ist der Unterschied zwischen einem Cmdlet und einem Skript?
Ein Cmdlet ist ein einzelner PowerShell-Befehl. Ein Skript ist eine Datei, in der du mehrere Befehle und eigene Logik zu einem wiederholbaren Ablauf verbindest.
Fazit: Was ist PowerShell und wann lohnt sich der Einstieg?
Die Antwort auf „Was ist PowerShell?“ wird beim Ausprobieren greifbar: Du liest Daten mit einem Cmdlet, verarbeitest die Objekte über die Pipeline und speicherst das Ergebnis bei Bedarf als Bericht. Das lohnt sich besonders bei wiederkehrenden Aufgaben und bei Auswertungen, die mit wenigen Klicks schwer reproduzierbar wären. Starte mit den lesenden Beispielen aus diesem Beitrag. Für den nächsten Schritt helfen dir die Anleitung Mit PowerShell starten und die Übersicht 20 wichtige PowerShell-Befehle.