Pipe mal was (in ein Skript)

Wer sich als Entwickler der PowerShell nähert, übersieht am Anfang so manche Abkürzung und damit einiges von dem, was die PowerShell wirklich ausmacht. Die Übergabe von Werten an ein Skript ist ein gutes Beispiel. Als Entwickler ist man es gewohnt, beim Aufruf einer Funktion, Methode usw. eine „saubere Parameterübergabe“ hinzulegen, am besten mit Datentypen und Default-Werten. Anders als bei Funktionen gibt es auf der Ebene des Skripts mit Ausnahme von $Args aber keine „Vorrichtung“, die Aufrufargumente enthält.

PowerShell-Profis pipen daher direkt in ein Skript. Doch wie soll das Skript auf die Pipeline zugreifen? Ganz einfach über die Variable $Input, die stets den aktuellen Inhalt der Pipeline repräsentiert. Das folgende Beispiel ist eine kleine Skriptdatei, die prüft, ob alle Zeilen in einer übergebenen CSV-Datei die festgelegte Anzahl an Spalten besitzt – ansonsten wird eine Meldung ausgegeben:

# Prüft, ob jede Zeile die angegebene Anzahl an Spalten besitzt
# der Input wird aus der Pipeline geholt
$FehlerZeilen = 0
$AnzahlSpaltenSoll = $Args[0]
$Input | % {
$AnzahlSpalten = $_.Split(„,“).Length
if ($AnzahlSpalten -ne $AnzahlSpaltenSoll)
{ $FehlerZeilen++ }
}
„Anzahl Fehler: $FehlerZeilen“

Aufgerufen wird CheckUser.ps1 wie folgt:

get-content User.txt | .\CheckUser.ps1

Schreibe einen Kommentar

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s