- 2 Abschnitte
- 16 Lektionen
- Um den Kurs in deinem Profil zu hinterlegen klicke oben auf Starten
- Grundlagen & Einstieg9
- Fortgeschritten8
Pipeline und Objekte
Die Pipeline ist das Herzstück der PowerShell.
Sie verbindet Befehle miteinander, sodass die Ausgabe des einen Befehls zur Eingabe des nächsten wird.
Der Unterschied zu anderen Shells: PowerShell reicht keinen Text, sondern komplexe Objekte weiter.
Was ist eine Pipeline?
Eine Pipeline wird durch das Symbol | (Pipe-Zeichen) dargestellt.
Beispiel:
Get-Service | Where-Object { $_.Status -eq "Running" }
Dieser Befehl besteht aus zwei Teilen:
Get-Service→ liefert eine Liste von Dienst-Objekten.Where-Object→ filtert diese Objekte, behält nur die, deren EigenschaftStatusgleich „Running“ ist.
Das Ergebnis ist eine gefilterte Liste – und keine Textsuche, sondern eine echte Abfrage auf Eigenschaften.
Der Platzhalter $_
$_ steht in PowerShell für das aktuelle Objekt, das gerade durch die Pipeline fließt.
Bei jeder Schleife oder jedem Filter kannst du damit auf Eigenschaften zugreifen.
Beispiel:
Get-Process | Where-Object { $_.CPU -gt 100 }
→ Zeigt alle Prozesse an, die mehr als 100 CPU-Sekunden verbrauchen.
Objekte und ihre Eigenschaften
Ein Objekt ist eine strukturierte Dateneinheit mit Eigenschaften (z. B. Name, ID, Status).
Du kannst dir ansehen, was in einem Objekt steckt:
Get-Process | Get-Member
Damit siehst du alle Eigenschaften (Properties) und Methoden (Functions) des Objekts.
Beispielauszug:
Name MemberType Definition
---- ---------- ----------
CPU Property System.Double CPU {get;}
Id Property System.Int32 Id {get;}
Kill Method void Kill()
Start Method void Start()
Damit weißt du, dass du z. B. $_.CPU oder $_.Id verwenden kannst.
Objekte filtern
Mit Where-Object kannst du Bedingungen formulieren, ähnlich wie in einer SQL-Abfrage.
Beispiele:
Nur laufende Dienste anzeigen:
Get-Service | Where-Object { $_.Status -eq "Running" }
Dateien größer als 1 MB:
Get-ChildItem -File | Where-Object { $_.Length -gt 1MB }
Benutzerdefinierte Filter mit mehreren Bedingungen:
Get-Process | Where-Object { $_.CPU -gt 100 -and $_.Name -like "chrome*" }
Ergebnisse sortieren
Mit Sort-Object kannst du Ergebnisse nach einer bestimmten Eigenschaft ordnen.
Get-Process | Sort-Object CPU -Descending
Mehrere Sortierkriterien:
Get-Process | Sort-Object -Property CPU, Id
Eigenschaften auswählen
Mit Select-Object entscheidest du, welche Eigenschaften angezeigt werden sollen:
Get-Service | Select-Object Name, Status
Nur die ersten 5 Ergebnisse:
Get-Service | Select-Object -First 5
Nur eindeutige Werte:
Get-ChildItem | Select-Object Extension -Unique
Gruppieren und Zählen
Manchmal willst du wissen, wie viele Objekte bestimmte Eigenschaften teilen – z. B. wie viele Dienste denselben Status haben.
Get-Service | Group-Object Status
Ausgabe:
Count Name Group
----- ---- -----
65 Running {Appinfo, AudioSrv, ...}
20 Stopped {AdobeARMservice, AJRouter, ...}
Oder zählen, wie viele Prozesse gerade laufen:
Get-Process | Measure-Object
Wenn du etwas Bestimmtes zählen willst:
Get-Process | Measure-Object CPU -Sum
Formatieren von Ausgaben
PowerShell zeigt automatisch sinnvolle Tabellen an, aber du kannst das steuern:
Get-Service | Format-Table Name, Status
oder:
Get-Process | Format-List Name, Id, CPU
Format-Table (ft) = übersichtlich nebeneinander
Format-List (fl) = jede Eigenschaft untereinander, ideal bei langen Namen oder vielen Daten
Pipeline kombinieren
Du kannst mehrere Cmdlets kombinieren und damit ganze Datenflüsse bauen:
Get-ChildItem C:\Windows\System32 -File |
Where-Object { $_.Length -gt 10MB } |
Sort-Object Length -Descending |
Select-Object Name, Length -First 10
Das ergibt:
Alle Dateien in
System32Nur die, die größer als 10 MB sind
Sortiert nach Größe
Zeigt die 10 größten Dateien
Exportieren von Daten
Du kannst Ergebnisse in verschiedene Formate exportieren:
# Nach CSV
Get-Process | Select-Object Name, CPU | Export-Csv C:\Temp\prozesse.csv -NoTypeInformation
# Nach JSON
Get-Service | ConvertTo-Json
# Nach Datei (reiner Text)
Get-Service | Out-File C:\Temp\dienste.txt
So kannst du Daten weiterverarbeiten oder Berichte erstellen.
