Looking for powershell Keywords? Try Ask4Keywords

PowerShellArbeiten mit der PowerShell-Pipeline


Einführung

In PowerShell wird ein Objekt-Pipelining-Modell eingeführt, mit dem Sie ganze Objekte durch die Pipeline an verbrauchende Commandlets oder (mindestens) die Ausgabe senden können. Im Gegensatz zum klassischen String-basierten Pipelining müssen Informationen in Pipe-Objekten nicht an bestimmten Positionen sein. Commandlets können erklären, mit Objekten aus der Pipeline als Eingabe zu interagieren, während Rückgabewerte automatisch an die Pipeline gesendet werden.

Syntax

  • BEGIN Der erste Block. Einmal am Anfang ausgeführt. Die Pipeline-Eingabe hier ist $ null, da sie nicht festgelegt wurde.
  • PROCESS Der zweite Block. Wird für jedes Element der Pipeline ausgeführt. Der Pipeline-Parameter entspricht dem aktuell verarbeiteten Element.
  • ENDE Letzter Block. Einmal ausgeführt am Ende. Der Pipeline-Parameter ist gleich dem letzten Element der Eingabe, da er seit der Einstellung nicht geändert wurde.

Bemerkungen

In den meisten Fällen handelt es sich bei der Eingabe der Pipeline um ein Array von Objekten. Obwohl das Verhalten des Blocks PROCESS{} dem foreach{} Block ähnelt, erfordert das Überspringen eines Elements im Array einen anderen Prozess.

Wenn Sie, wie in foreach{} , innerhalb des PROCESS{} Blocks continue , würde dies die Pipeline zerstören und alle folgenden Anweisungen einschließlich des END{} Blocks überspringen. Verwenden Sie stattdessen return , um den Block PROCESS{} für das aktuelle Element zu beenden und zum nächsten zu wechseln.

In einigen Fällen müssen die Ergebnisse von Funktionen mit unterschiedlicher Codierung ausgegeben werden. Die Codierung der Ausgabe der CmdLets wird durch die Variable $OutputEncoding gesteuert. Wenn die Ausgabe für native Anwendungen in einer Pipeline abgelegt werden soll, $OutputEncoding = [Console]::OutputEncoding es sich, die Kodierung entsprechend dem Ziel $OutputEncoding = [Console]::OutputEncoding

Zusätzliche referenzen:

Blogartikel mit mehr $OutputEncoding https://blogs.msdn.microsoft.com/powershell/2006/12/11/outputencoding-to-the-rescue/

Arbeiten mit der PowerShell-Pipeline Verwandte Beispiele