Die Windows PowerShell Pipe richtig anwenden

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.BearbeitungsschrittErläuterungHäufige Cmdlets
1Daten bereitstellenAls erstes werden Daten zum arbeiten benötigt. Hierführ verwendet man in der Regel Cmdlets mit dem Verb Get.Get-
2Das Ergebnis der Daten bearbeiten, bis man das gewüschte erhältIn 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
3Ausgabe der ErgebnisseOhne 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 ge­lan­gt 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

ca8fc748322441f195f9a438533090b3

Das könnte dich auch interessieren:


Steigere dein Wissen

Kostenlose Befehlsreferenzen und E-Books herunterladen

Mehr Informationen zu den kostenlosen Materialien.


Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen