Where-Object ·
Select-Object ·
Sort-Object ·
ForEach-Object ·
Group-Object ·
Measure-Object
Diese Cmdlets sind das Herzstück der PowerShell-Datenverarbeitung. Sie ermöglichen das Filtern, Sortieren, Auswählen, Gruppieren und Analysieren von Objekten in der Pipeline.
Where-Object (Alias: where, ?) filtert Objekte in der Pipeline anhand von Bedingungen. Es werden nur Objekte weitergegeben, die die Bedingung erfüllen.
| Operator | Bedeutung |
|---|---|
| -eq | Gleich (equal) |
| -ne | Ungleich (not equal) |
| -gt | Größer als (greater than) |
| -ge | Größer oder gleich |
| -lt | Kleiner als (less than) |
| -le | Kleiner oder gleich |
| -like | Mustervergleich (mit Wildcards) |
| -match | Regulärer Ausdruck |
| -in | Element ist in der Liste |
| -contains | Enthält das Element |
Get-Process | Where-Object CPU -gt 10:Where-Object Eigenschaft -Operator Wert (ohne Skriptblock) ist seit PowerShell 3.0 verfügbar und wesentlich kompakter.
Select-Object (Alias: select) wählt bestimmte Eigenschaften von Objekten aus oder begrenzt die Anzahl der Objekte.
| Option | Beschreibung |
|---|---|
| -Property | Welche Eigenschaften sollen angezeigt werden |
| -First N | Nur die ersten N Objekte |
| -Last N | Nur die letzten N Objekte |
| -Skip N | Die ersten N Objekte überspringen |
| -Unique | Nur eindeutige Objekte (nach den ausgewählten Eigenschaften) |
| -ExpandProperty | Wert einer Eigenschaft extrahieren |
Get-Process | Select-Object Name, CPU -First 3:Select-Object -ExpandProperty Name gibt nur die Werte der Eigenschaft als einfache Strings aus – perfekt für weitere Pipeline-Verarbeitung.
Sort-Object (Alias: sort) sortiert Objekte nach einer oder mehreren Eigenschaften.
| Option | Beschreibung |
|---|---|
| -Property | Eigenschaft, nach der sortiert wird |
| -Descending | Absteigend sortieren |
| -Unique | Nur eindeutige Werte behalten |
| -CaseSensitive | Groß-/Kleinschreibung beachten |
Sort-Object -Unique ist besonders nützlich, um Duplikate aus einer Liste zu entfernen – z.B. Get-Process | Select-Object -ExpandProperty ProcessName | Sort-Object -Unique.
ForEach-Object (Alias: foreach, %) führt einen Skriptblock für jedes Objekt in der Pipeline aus. Es ist das zentrale Cmdlet für Transformationen und Aktionen pro Objekt.
| Variable | Beschreibung |
|---|---|
| $_ (oder $PSItem) | Das aktuelle Objekt in der Pipeline |
| $_.Eigenschaft | Eine Eigenschaft des aktuellen Objekts |
1..5 | ForEach-Object { $_ * 2 }:ForEach-Object ist das Cmdlet für die Pipeline. Verwenden Sie foreach (ohne Pipeline) für Schleifen in Skripten, wenn Sie eine fertige Liste haben.
Group-Object (Alias: group) gruppiert Objekte nach einer Eigenschaft und zählt die Anzahl in jeder Gruppe.
| Option | Beschreibung |
|---|---|
| -Property | Eigenschaft, nach der gruppiert wird |
| -NoElement | Zeigt die gruppierten Objekte nicht an, nur die Zählung |
| -CaseSensitive | Groß-/Kleinschreibung beachten |
Get-Service | Group-Object Status:Group-Object ist ideal für schnelle Statistiken – wie viele Dienste laufen oder wie viele Dateien einer bestimmten Erweiterung existieren.
Measure-Object (Alias: measure) berechnet statistische Werte wie Minimum, Maximum, Summe, Durchschnitt und Anzahl von Objekten oder Eigenschaften.
| Option | Beschreibung |
|---|---|
| -Min | Minimalwert berechnen |
| -Max | Maximalwert berechnen |
| -Sum | Summe berechnen |
| -Average | Durchschnitt berechnen |
| -StandardDeviation | Standardabweichung berechnen |
| -Line | Zählt Zeilen (für Textdateien) |
| -Word | Zählt Wörter |
| -Character | Zählt Zeichen |
Get-Process | Measure-Object CPU -Min -Max -Average:Measure-Object -Line -Word -Character ist die PowerShell-Entsprechung zu wc unter Linux – perfekt für Textdatei-Statistiken.
{ } eingeschlossener Codeblock.Where-Object
Select-Object
Sort-Object
ForEach-Object
Group-Object
Measure-Object
Get-Process | Where-Object CPU -gt 10 | Sort-Object CPU -Descending | Select-Object Name, CPU -First 5