Pipelines and function execution
Although pipelines are written sequentially with each element following the previous one, function execution in a pipeline is somewhat different. In order to illustrate this, consider the following advanced functions that all allow pipeline input:
function A{ [CmdletBinding()] Param([Parameter(ValueFromPipeline=$true)]$x) begin { Write-Host "A in begin"} process { Write-Host "A in Process{}" Write-Output $x } end { Write-Host "A in end"} } function B{ [CmdletBinding()] Param([Parameter(ValueFromPipeline=$true)]$y) begin { Write-Host "B in begin"} process { Write-Host "B in Process{}" Write-Output $y } end { Write-Host "B in end"} } function C{ [CmdletBinding()] Param([Parameter(ValueFromPipeline=$true)]$z) begin { Write-Host "C in begin"} process { Write-Host "C in Process{}" Write-Output $z } end { Write-Host "C in end"} }
The only thing these functions do is display a message when one of the three Begin
-Process...