🔷 PowerShell 7+ Essentials

PS 03: Where-Object, Select & Calculated Properties

Meistere die zentralen Cmdlets zur Datenmanipulation: Filtern mit Where-Object, Projizieren mit Select-Object, Berechnete Eigenschaften und Sortierung.

🎯 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.

🎯 Aufgaben & Checkliste in aufgabe.ps1

💻 In Web-IDE öffnen → ← Zurück zu PS 02 Weiter zu PS 04 →