Die Pipeline & Praxis

Einzelne Befehle sind nützlich — verkettet werden sie mächtig. Der senkrechte Strich | (die „Pipe") reicht das Ergebnis eines Befehls an den nächsten weiter. Weil PowerShell Objekte durchreicht, kannst du filtern, sortieren und auswählen, ohne Text zu zerschneiden.

Lies die Pipe als „und dann": Get-Process | Sort-Object CPU | Select-Object -First 5 = „hol die Prozesse und dann sortiere nach CPU und dann nimm die ersten fünf".

Die drei Pipeline-Arbeitspferde

🔎 Where-Object
Filtern — behält nur Objekte, die eine Bedingung erfüllen. Where-Object Length -gt 1MB.
↕️ Sort-Object
Sortieren — nach einer Eigenschaft, auf- oder absteigend. Sort-Object CPU -Descending.
✂️ Select-Object
Auswählen — bestimmte Spalten oder die ersten N. Select-Object Name, CPU -First 5.

Praktische Einzeiler

PowerShellzum Kopieren & Ausprobieren
# Die 5 Programme, die gerade am meisten CPU ziehen
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5

# Alle Dateien im Ordner, die größer als 1 MB sind
Get-ChildItem | Where-Object Length -gt 1MB

# Wie viele .log-Dateien liegen hier (auch in Unterordnern)?
Get-ChildItem -Recurse -Filter *.log | Measure-Object

# Alle Zeilen mit "TODO" in allen .txt-Dateien finden (wie grep)
Select-String "TODO" *.txt

# Ein hängendes Programm beenden
Stop-Process -Name notepad

So sieht das live aus

Windows PowerShell
# Top 3 CPU-Fresser
PS C:\Users\du> Get-Process | Sort-Object CPU -Descending | Select-Object Name, CPU -First 3
Name CPU ---- --- chrome 842,19 Code 311,77 explorer 96,05

Manches braucht Admin-Rechte

Dienste beenden, systemweite Einstellungen, Software installieren — dafür brauchst du eine erhöhte Shell. Öffne sie über WinXTerminal (Administrator) (oder Rechtsklick aufs Icon → Als Administrator ausführen). Erkennbar am Administrator: im Fenstertitel.

Skripte ausführen (.ps1)

Aus Sicherheitsgründen blockiert Windows das Ausführen von PowerShell-Skripten standardmäßig. Einmalig pro Benutzer freischalten:

PowerShell (als Admin nicht nötig)Skripte für deinen Benutzer erlauben
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

RemoteSigned heißt: deine eigenen Skripte laufen, aus dem Internet geladene nur, wenn sie signiert sind — ein guter Mittelweg. Ein Skript startest du dann mit .\\meinskript.ps1.

Warum eigentlich?Warum ist eine Objekt-Pipeline besser als Text?
In Bash/CMD gibt jeder Befehl Text aus, und der nächste muss ihn mühsam zerschneiden (welche Spalte ist die Größe? wie ist das Datum formatiert?). PowerShell reicht echte Objekte weiter: Sort-Object Length weiß ohne Parsen, was die Größe ist, weil jedes Datei-Objekt eine .Length-Eigenschaft hat. Du beschreibst was du willst (nach Größe sortieren), nicht wie man es aus Text herauspult. Das macht Einzeiler kurz und robust.
Häufiger Denkfehler„Die Ausführung von Skripts ist deaktiviert“
Diese rote Fehlermeldung schreckt viele ab — dabei ist sie nur die Standard-Sicherheitseinstellung, kein echtes Problem. Einmal Set-ExecutionPolicy -Scope CurrentUser RemoteSigned und deine Skripte laufen. Nicht empfehlenswert ist Unrestricted oder das Setzen für alle Benutzer — bleib bei CurrentUser und RemoteSigned.
Tiefer reinForEach-Object und die $_ -Variable
Manchmal willst du pro Objekt etwas tun. ForEach-Object macht das, und $_ ist dabei „das aktuelle Objekt":
PowerShell
# Jede .txt in GROSS umbenennen
Get-ChildItem *.txt | ForEach-Object {
  Rename-Item $_ ($_.BaseName.ToUpper() + ".txt")
}

# Where mit komplexer Bedingung — auch hier $_
Get-ChildItem | Where-Object { $_.Length -gt 1MB -and $_.Extension -eq ".zip" }
Die ausführliche { $_.… }-Schreibweise brauchst du, sobald die Bedingung mehr als einen einfachen Vergleich hat.