Zum Hauptinhalt springen

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.