Pipelining - Objekte

Die PowerShell arbeitet objektorientiert! Der Pipeline Operator ( | Pipe) stellt mehr dar, als einfach nur die „Weitergabe“ von Objekten an das Folge-Cmdlet. Vielmehr werden durch den Pipeline-Prozessor die Daten verarbeitet und aufbereitet.

Get-Process | Format-List

komplexere Pipeline:

Get-ChildItem e:\_temp –r -filter *.txt |
    Where-Object { $_.Length -gt 40000 } |
    Select-Object Name, Length |
    Sort-Object Length |
    Format-List

Der besondere Bezeichner $_ greift auf das aktuelle Objekt zu.

Neu: $PSItem als gleichwertiger Ersatz zu $_ (seit PowerShell 3.0)

Get-Process | Where-Object {$_.name -eq "iexplore"} |
Format-Table ProcessName, WorkingSet64

Alle Prozesse, die mehr als 20 MB verbrauchen:

Get-Process | Where-Object {$_.WorkingSet64 -gt 20*1024*1024 }

kurze Variante (kann man so nur für die Befehlszeile nutzen! Stichwort: Quick and Dirty)

ps | ? {$_.ws -gt 20MB }

alle Dienste, die mit i beginnen

"i*" | Get-Service

Dienst „gleich“ BITS

"BITS" | Get-Service

Anm.: Erklärung für dieses Verhalten mit Get-Help Get-Service –full (siehe nach -name Pipelineeingaben akzeptieren byValue und byPropertyName)

Pipeline-Bilder (nach Schwichtenberg; S. 62/63; s.a. it-visions.de - Cheat Sheet)

Pipeline Schwichtenberg - ehemals auf entwickler.de Portal

Übersicht PowerShell Technik

Pipeline Technik

Auch die klassischen Befehle lassen sich pipen (Select-String für reguläre Ausdrücke)

netstat | Select-String "HERGESTELLT" -case

Hier weitere Abschnitte zum Thema: