🎯 1. Filtern mit Where-Object (Alias: ?)
Mit Where-Object filterst du Objekte im Datenstrom. In der Scriptblock-Syntax steht $_ (oder $PSItem) für das aktuell durchfließende Objekt:
# Scriptblock-Syntax (Standard & flexibel):
Get-Service | Where-Object { $_.Status -eq 'Running' -and $_.StartType -eq 'Automatic' }
# Kurzform mit Alias '?':
Get-Process | ? { $_.CPU -gt 50 }
# Vereinfachte Syntax (seit PS 3.0):
Get-Service | Where-Object Status -EQ 'Running'
🔍 Didaktische Analogie: Das Zoll-Sieb in der Pipeline
Where-Object ist der Zollbeamte an deiner Pipeline: Jedes Objekt, das den Testblock { ... } durchläuft und $true ergibt, darf passieren. Alle anderen Objekte werden verworfen – die nachfolgenden Cmdlets sehen sie gar nicht mehr!
📐 2. Projektion & Calculated Properties (Berechnete Eigenschaften)
Mit Select-Object wählst du gezielt Eigenschaften aus, reduzierst Datenmengen und erstellst mit Calculated Properties dynamische, neu berechnete Felder:
# Eigenschaften auswählen und erste 5 nehmen:
Get-Process | Select-Object -Property Name, Id -First 5
# Calculated Property Syntax: @{ Name = 'Titel'; Expression = { $_.Rechnung } }
Get-Process | Select-Object -Property Name, Id, @{
Name = 'WorkingSetMB'
Expression = { [Math]::Round($_.WorkingSet64 / 1MB, 2) }
}
# Werte extrahieren (als reiner String / Array ohne Objekt-Hülle):
Get-Service | Select-Object -ExpandProperty Name
📊 3. Sort-Object & Group-Object
Sortiere und aggregiere Datenmengen mit Leichtigkeit:
# Mehrstufige Sortierung (z.B. Gehalt absteigend, Name aufsteigend):
$Mitarbeiter | Sort-Object -Property @{ Expression = "Gehalt"; Descending = $true }, "Nachname"
# Gruppierung & Zählung:
Get-Service | Group-Object -Property Status | Select-Object Name, Count
📑 4. Cheat-Sheet: Pipeline-Verarbeitung
| Cmdlet | Alias | Wichtige Parameter | Zweck |
|---|---|---|---|
Where-Object |
?, where |
-FilterScript { ... } |
Filtert Objekte nach Bedingungen. |
Select-Object |
select |
-Property, -First, -Unique, -ExpandProperty |
Projiziert Felder und erzeugt neue Objekte. |
Sort-Object |
sort |
-Property, -Descending, -CaseSensitive |
Sortiert Objekte nach einem oder mehreren Feldern. |
Group-Object |
group |
-Property, -AsHashTable, -NoElement |
Gruppiert Datenmengen und ermittelt Häufigkeiten. |