PowerShell Grundlagen#
PowerShell ist die von Microsoft entwickelte, objektorientierte Shell und Skriptsprache zur Automatisierung von Windows-Administrationsaufgaben. Anders als klassische Shells wie Bash, die Textausgaben zwischen Befehlen weiterreichen, arbeitet PowerShell mit strukturierten .NET-Objekten — das macht die Weiterverarbeitung von Ergebnissen deutlich zuverlässiger als das Parsen von reinem Text.
Objekte statt Text#
Gibt ein Bash-Befehl eine Liste von Prozessen aus, ist das Ergebnis eine Zeichenkette, aus der bei Bedarf einzelne Werte (z. B. eine Prozess-ID) mühsam mit Textwerkzeugen herausgeschnitten werden müssen. Ein PowerShell-Cmdlet liefert stattdessen ein Objekt mit klar benannten Eigenschaften (z. B. Id, ProcessName, CPU), auf die direkt zugegriffen werden kann — ohne Textverarbeitung.
Cmdlet-Namenskonvention#
PowerShell-Befehle heißen Cmdlets (“Command-lets”) und folgen durchgängig dem Schema Verb-Substantiv, was sie gut lesbar und vorhersehbar macht:
| Cmdlet | Bedeutung |
|---|---|
Get-Process | Laufende Prozesse anzeigen |
Get-Service | Windows-Dienste anzeigen |
Set-Item | Wert eines Elements ändern |
Get-ChildItem | Inhalt eines Verzeichnisses auflisten (vergleichbar mit ls/dir) |
New-Item | Neue Datei oder neues Verzeichnis erstellen |
Stop-Process | Laufenden Prozess beenden |
Das Verb (Get, Set, New, Stop, …) beschreibt die Aktion, das Substantiv das betroffene Objekt — dadurch lässt sich die Wirkung eines unbekannten Cmdlets meist schon am Namen erahnen.
Pipeline-Konzept#
Wie in Bash können auch in PowerShell mehrere Cmdlets über das Pipe-Symbol | verkettet werden. Der entscheidende Unterschied: Es werden keine Textzeilen, sondern vollständige Objekte von einem Cmdlet zum nächsten weitergereicht.
Get-Process | Where-Object { $_.CPU -gt 100 } | Sort-Object CPUDieses Beispiel liest alle laufenden Prozesse aus (Get-Process), filtert sie nach CPU-Auslastung (Where-Object) und sortiert das Ergebnis (Sort-Object) — jedes Cmdlet arbeitet direkt mit den Objekteigenschaften des vorherigen.
flowchart LR
A[Get-Process] -->|Objekte| B[Where-Object]
B -->|gefilterte Objekte| C[Sort-Object]
C -->|sortierte Objekte| D[Ausgabe / Output]Typische Administrationsaufgaben#
PowerShell wird in der Windows-Administration vor allem für folgende Aufgaben eingesetzt:
- Benutzerverwaltung: lokale Benutzerkonten anlegen, ändern oder deaktivieren
- Active-Directory-Verwaltung: Benutzer, Gruppen und Computerobjekte in einer Windows-Domäne zentral verwalten (eigenes AD-Modul mit entsprechenden Cmdlets)
- Systeminformationen abfragen: Hardware- und Betriebssystemdaten, laufende Dienste und Prozesse auslesen
- Automatisierung wiederkehrender Aufgaben: Skripte (
.ps1-Dateien), die z. B. per Aufgabenplanung zeitgesteuert ausgeführt werden — vergleichbar mit Cronjobs unter Linux
Prüfungsbeispiele#
„Was ist der zentrale Unterschied zwischen der PowerShell-Pipeline und der Bash-Pipeline?"
→ Bash reicht reinen Text zwischen Befehlen weiter, der bei Bedarf geparst werden muss. PowerShell reicht strukturierte Objekte mit benannten Eigenschaften weiter, auf die nachfolgende Cmdlets direkt zugreifen können.
„Nach welchem Namensschema sind PowerShell-Cmdlets aufgebaut? Nenne ein Beispiel."
→ Nach dem Schema Verb-Substantiv, z. B. Get-Process (Verb Get, Substantiv Process) — das Verb beschreibt die Aktion, das Substantiv das betroffene Objekt.
„Ein Administrator soll Benutzerkonten in einer Windows-Domäne zentral verwalten. Welches Werkzeug bietet sich dafür an?"
→ PowerShell mit dem Active-Directory-Modul, das eigene Cmdlets zur Verwaltung von Benutzern, Gruppen und Computerobjekten in der Domäne bereitstellt.
Quiz#
❓ Was unterscheidet die PowerShell-Pipeline grundlegend von der Bash-Pipeline?
❓ Welches Cmdlet listet den Inhalt eines Verzeichnisses auf (vergleichbar mit ls/dir)?
❓ Wofür wird in PowerShell typischerweise das Active-Directory-Modul eingesetzt?
Siehe auch#
- shell-scripting — vergleichbares Automatisierungskonzept unter Linux/Bash
- programmiergrundlagen — grundlegende Kontrollstrukturen, die auch in PowerShell-Skripten gelten
- zugriffskontrolle — Benutzer- und Rechteverwaltung, die per PowerShell administriert wird