Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

powershell:valuefrompipeline

ValueFromPipeline

class person{
    [string]$Name
    [int]$Age
}
 
function Test-Person{
    [CmdletBinding()]
    param(
        [Parameter(Mandatory=$true, ValueFromPipeline=$true)][person[]]$InputObject
    )
    begin{}
    process{
        foreach($item in $InputObject){
            $item.Name
            ""
        }
    }
    end{}
}
 
$a = New-Object -TypeName person
$a.Name = "Hello"
 
$b = New-Object -TypeName person
$b.Name = "World"
 
$c = @($a, $b)
 
$c | Test-Person
 
Test-Person -InputObject $c
 
Test-Person -InputObject $a

Wird der Parameter per Pipeline übergeben, handelt Powershell jedes Object einzeln in der Process-Schleife ab. Die foreach-Schleife läuft in diesem Fall nur ein einziges Mal pro Aufruf. Wird der Parameter InputObject direkt übergeben, greift die foreach-Schleife, die in diesem Fall das Array abläuft.

Wichtig: Der Ablauf in der Funktion sieht so aus:

  1. Parameterübergabe (param-Block)
  2. Einmalige Ausführung zu Beginn der Funktion (begin-Block)
  3. Mehrmalige Ausführung, falls per Pipeline mehrere Objekte übergeben wurden (process-Block)
  4. Abschließende Ausführung, zu Ende der Funktion (end-Block)

Quelle

powershell/valuefrompipeline.txt · Zuletzt geändert: 2018/05/04 12:19 von ronny