Skip to content

Instantly share code, notes, and snippets.

@lazywinadmin
Created February 24, 2017 17:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lazywinadmin/be5f08cd28aae0d3652360f29ce5a6ab to your computer and use it in GitHub Desktop.
Save lazywinadmin/be5f08cd28aae0d3652360f29ce5a6ab to your computer and use it in GitHub Desktop.
How does BEGIN PROCESS END Blocks work in the pipeline
function A
{
[CmdletBinding()]
Param
(
[parameter(ValueFromPipeline=$true)]
$MyParam
)
Begin
{
$currentfunction = (Get-Variable -name myinvocation -scope 0 -ValueOnly).mycommand
Write-Verbose -Message "[Function $Currentfunction] BEGIN Block"
}
Process
{
Write-Verbose -Message "[Function $Currentfunction] PROCESS Block"
Write-Output -InputObject $MyParam
}
End
{
Write-Verbose -Message "[Function $Currentfunction] END Block"
}
}
function B
{
[CmdletBinding()]
Param
(
[parameter(ValueFromPipeline=$true)]
$MyParam
)
Begin
{
$currentfunction = (Get-Variable -name myinvocation -scope 0 -ValueOnly).mycommand
Write-Verbose -Message "[Function $Currentfunction] BEGIN Block"
}
Process
{
Write-Verbose -Message "[Function $Currentfunction] PROCESS Block"
Write-Output -InputObject $MyParam
}
End
{
Write-Verbose -Message "[Function $Currentfunction] END Block"
}
}
function C
{
[CmdletBinding()]
Param
(
[parameter(ValueFromPipeline=$true)]
$MyParam
)
Begin
{
$currentfunction = (Get-Variable -name myinvocation -scope 0 -ValueOnly).mycommand
Write-Verbose -Message "[Function $Currentfunction] BEGIN Block"
}
Process
{
Write-Verbose -Message "[Function $Currentfunction] PROCESS Block"
Write-Output -InputObject $MyParam
}
End
{
Write-Verbose -Message "[Function $Currentfunction] END Block"
}
}
1..10 | A -Verbose | B -Verbose |C -Verbose
#OUTPUT
<#
1..10 | A -Verbose | B -Verbose |C -Verbose
VERBOSE: [Function A] BEGIN Block
VERBOSE: [Function B] BEGIN Block
VERBOSE: [Function C] BEGIN Block
VERBOSE: [Function A] PROCESS Block
VERBOSE: [Function B] PROCESS Block
VERBOSE: [Function C] PROCESS Block
1
VERBOSE: [Function A] PROCESS Block
VERBOSE: [Function B] PROCESS Block
VERBOSE: [Function C] PROCESS Block
2
VERBOSE: [Function A] PROCESS Block
VERBOSE: [Function B] PROCESS Block
VERBOSE: [Function C] PROCESS Block
3
VERBOSE: [Function A] PROCESS Block
VERBOSE: [Function B] PROCESS Block
VERBOSE: [Function C] PROCESS Block
4
VERBOSE: [Function A] PROCESS Block
VERBOSE: [Function B] PROCESS Block
VERBOSE: [Function C] PROCESS Block
5
VERBOSE: [Function A] PROCESS Block
VERBOSE: [Function B] PROCESS Block
VERBOSE: [Function C] PROCESS Block
6
VERBOSE: [Function A] PROCESS Block
VERBOSE: [Function B] PROCESS Block
VERBOSE: [Function C] PROCESS Block
7
VERBOSE: [Function A] PROCESS Block
VERBOSE: [Function B] PROCESS Block
VERBOSE: [Function C] PROCESS Block
8
VERBOSE: [Function A] PROCESS Block
VERBOSE: [Function B] PROCESS Block
VERBOSE: [Function C] PROCESS Block
9
VERBOSE: [Function A] PROCESS Block
VERBOSE: [Function B] PROCESS Block
VERBOSE: [Function C] PROCESS Block
10
VERBOSE: [Function A] END Block
VERBOSE: [Function B] END Block
VERBOSE: [Function C] END Block
#>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment