Grundlagen
In der Windows PowerShell bietet die Pipeline eine tolle Möglichkeit, um komplexe Aufgaben zu erledigen. Die Pipeline kann man sich ganz einfach als „Objekt-Weitergabe“ vorstellen.
D. h. Sie führen einen Befehl aus und anstatt sich das Ergebnis direkt ausgeben zu lassen, wird das Ergebnis an einen weiteren Befehl übergeben, der dann wieder etwas mit dem Ergebnis macht. Von Prinzip ist das eine Befehlskette.
Ganz allgemein kann man sich den Aufbau einer Befehlskette wie in der Tabelle dargestellt vorstellen. Die Befehle sind jeweils durch die Pipe (|) verbunden.
Da es in der PowerShell sehr viele Cmdlets gibt, möchte ich nur zeigen, wie man sich auf die Suche nach dem passend machen kann.
Nr. | Bearbeitungsschritt | Erläuterung | Häufige Cmdlets |
---|---|---|---|
1 | Daten bereitstellen | Als erstes werden Daten zum arbeiten benötigt. Hierführ verwendet man in der Regel Cmdlets mit dem Verb Get. | Get- |
2 | Das Ergebnis der Daten bearbeiten, bis man das gewüschte erhält | In diesem Schritt verwendet man Cmdlets, die mit Daten arbeiten, welche sie über die Pipeline erhalten. Meistens sind hier Cmdlets mit dem Substantiv Object anzuwenden | -Object |
3 | Ausgabe der Ergebnisse | Ohne diesen Schritt, werden die Ergebnisse im Konsolenfenster ausgegeben. Oft möchte man die Ergebnisse allerdings formatiert speichern. | Export-Format-Out- |
Die 3 Schritte im Detail
Bearbeitungsschritt Nr. 1
Im Schritt 1 benötigen wir alles, was mit Get-.. Beginnt. Das Auflisten der Elemente erfolgt unter der Zuhilfenahme der Wildcard.
Get-Command Get-*
Hat man das passende gefunden, so kann man sich der Hilfe bedienen. Z. B. möchten wir mehr Informationen zum Cmdlet Get-Childitem.
Get-help Get-Childitem -detailed
Bearbeitungsschritt Nr. 2
Nachdem man die Daten hat, müssen diese verarbeitet werden. Dazu benötigt man ein Cmdlet mit dem Substantiv Object. Alle diese Cmdlets kann man sich folgendermaßen auflisten lassen.
Get-Command -Noun Object
Die Hilfe funktioniert natürlich wie oben bei Get.
Bearbeitungsschritt Nr. 3
Zu guter Letzt möchten wir die Ergebnisse für die Ausgabe formatieren und ggf. konvertierten oder exportieren. Die hierfür zu verwendenden Cmdlets sind an ihrem Verb erkennbar.
Diese sind Out (Ausgabe), Export (Exportieren) und ConvertTo (für die Konvertierung in ein anderes Format). Einige Beispiele, wie man Ausgaben speichert, findet ihr in diesem Artikel.
Artikel: Powershell Ausgabe speichern.
Alle Cmdlets dieser Gruppen kann man sich wieder mithilfe der Wildcard auflisten lassen.
Get-Command Out*
Get-Command Export*
Get-Command ConvertTo*
Die Hilfe für ein bestimmtes Cmdlet funktioniert natürlich wieder genauso wie oben. Also z. B. :
Get-Help ConvertTo-Html -detailed
Zum Abschluss dieses Artikels, möchte ich euch noch anhand der folgenden Aufgabe erläutern, wie man mithilfe der Pipeline eine komplexe Aufgabe schrittweise entwickelt.
Aufgabe:
Es sollen alle .exe Daten, die größer als 20 KB sind mit ihrem Namen und deren Größe ausgegeben werden. Des Weiteren soll die Ausgabe in absteigender Reihenfolge in ein .html Dokument konvertiert werden.
Die Entwicklung der Aufgabe erfolgt in 6 Schritten.
1. Schritt: Auslesen aller .exe Dateien aus dem Verzeichnisinhalt. Mit der Wildcard (*) geht das relativ einfach.
Get-ChildItem -Path c:\Windows*.exe
2. Schritt: Ausgabe alle Dateien, die größer als 20 KB sind.
Get-ChildItem -Path C:Windows*.exe | Where-Object { $_.Length -gt 20kb}
3. Schritt: Nur der Name und die Größe sollen ausgegeben werden:
Get-ChildItem -Path C:Windows*.exe | Where-Object { $_.Length -gt 20kb } | Select-Object -Property Length, Name
4. Schritt: Sortierung nach Dateigröße in absteigender Reihenfolge.
Get-ChildItem -Path C:Windows*.exe | Where-Object { $_.Length -gt 20kb } | Select-Object -Property Length, Name | Sort-Object -Property Length -Descending
5. Schritt: Ausgabe in das HTML-Format konvertieren
Get-ChildItem -Path C:Windows*.exe | Where-Object { $_.Length -gt 20kb } | Select-Object -Property Length, Name | Sort-Object -Property Length -Descending | ConvertTo-Html -Body "<h1>Ausgabe Dateien </h1>"
6. Schritt: HTML Dokument speichern.
Get-ChildItem -Path C:Windows*.exe | Where-Object { $_.Length -gt 20kb } | Select-Object -Property Length, Name | Sort-Object -Property Length -Descending | ConvertTo-Html -Body "<h1>Ausgabe Dateien </h1>" | Set-Content -Path C:UserstestDocumentsdateien.html
Wie man anhand des Beispiels sieht, kann man mit der Pipeline relativ komplexe Aufgabe bewältigen. Wichtig dabei ist immer die schrittweise Vorgehensweise und die zu Hilfenahme der Hilfe. Wenn man Get-Help verwendet, ist es immer auch sinnvoll die Optionen -detailed oder -examples zu verwendet. Meistens erhält man hier einen guten Überblick über die Funktionsweise der einzelnen Cmdlets.
Fazit
Wenn man eine strukturierte Vorgehensweise hat, so kann man sich mit der Windows PowerShell und der Pipeline wunderschöne Befehlsketten basteln. Natürlich bedarf das ganze immer etwas an Übung.
Dieser Artikel beinhaltet Partner-Links. Durch einen Klick darauf gelangt ihr direkt zum Anbieter. Solltet ihr euch dort für einen Kauf entscheiden, erhält IT-Learner eine kleine Provision. Der Preis ändert sich für euch nicht. Danke für eure Unterstützung! Letzte Aktualisierung am 2.11.2023
Das könnte dich auch interessieren:
- Mit der Windows PowerShell prüfen, ob eine bestimmte Datei oder ein Verzeichnis bereits existiert
- Visual Studio Code unter Windows installieren und für das PowerShell Scripting einrichten
- Wenn mal ein Process unter Windows hängt, kann man auch die Windows PowerShell verwenden um diesen zu beenden
- Ein Aufgabe mit der Windows PowerShell erstellen und die Administration damit automatisieren
- Mit der Windows PowerShell alle laufenden Processe auslesen und grafische darstellen – Einfache Befehlsketten mit der Pipe entwickeln!
Steigere dein Wissen
Kostenlose Befehlsreferenzen und E-Books herunterladen