Die Standardvariable $Input
Anstatt die Pipeline-Elemente mit dem Process-Block zu verarbeiten, kann man auch auf die Standard-Variable $Input zurückgreifen, in der alle Elemente einer Pipeline gespeichert sind.
function Test-PipelineWithInputVariable
{
param(
[System.IO.FileInfo]$FileObject
)
If ($FileObject)
{
$FileObject.FullName
}
Else
{
Foreach ( $Element in $Input )
{
$Element.FullName
}
}
}
Die Objekte werden alle in der Arraylist-Enumeration $Input gespeichert und können über eine Schleife verarbeitet werden. Am Aufruf der Funktion hat sich nichts geändert:
Get-Childitem C:\Windows\ -File | Test-PipelineWithInputVariable
Test-PipelineWithInputVariable -FileObject C:\Windows\notepad.exe
Da die Objekte jetzt, anders als im Streamingmodus, erst in der Variablen $Input gesammelt werden müssen, ist diese Variante aber deutlich speicherintensiver, und der Code ist unleserlicher.
Mehr zu $Input finden Sie im Artikel $input gotchas.