Skip to content

Commit 9a2bb3f

Browse files
Add pipeline functions with default parameter values and verbose logging
1 parent 5c1fc40 commit 9a2bb3f

1 file changed

Lines changed: 97 additions & 0 deletions

File tree

guidance/PipelineExecution.ps1

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
function Set-DefaultParameterValue {
2+
[CmdletBinding()]
3+
param (
4+
[string]$Parameter = 'Default-Parameter'
5+
)
6+
Write-Verbose "Set-DefaultParameterValue: Setting Parameter to '$Parameter'"
7+
Start-Sleep -Seconds 1
8+
return $Parameter
9+
}
10+
11+
function Step-One {
12+
[CmdletBinding()]
13+
param (
14+
[Parameter(ValueFromPipeline = $true)]
15+
[int]$InputNumber,
16+
17+
[string]$Parameter = (Set-DefaultParameterValue -Parameter 'Step-One-Default')
18+
)
19+
begin {
20+
Write-Verbose "Step-One: BEGIN block. Parameter=$Parameter"
21+
Start-Sleep -Seconds 1
22+
}
23+
process {
24+
Write-Verbose "Step-One: PROCESS block. InputNumber=$InputNumber, Parameter=$Parameter"
25+
$Output = $InputNumber * 10
26+
Write-Output $Output
27+
Start-Sleep -Seconds 1
28+
}
29+
end {
30+
Write-Verbose "Step-One: END block. Parameter=$Parameter"
31+
Start-Sleep -Seconds 1
32+
}
33+
34+
clean {
35+
Write-Verbose "Step-One: CLEANUP block. Parameter=$Parameter"
36+
Start-Sleep -Seconds 1
37+
}
38+
}
39+
40+
function Step-Two {
41+
[CmdletBinding()]
42+
param (
43+
[Parameter(ValueFromPipeline = $true)]
44+
[int]$InputNumber,
45+
46+
[string]$Parameter = (Set-DefaultParameterValue -Parameter 'Step-Two-Default')
47+
)
48+
begin {
49+
Write-Verbose "Step-Two: BEGIN block. Parameter=$Parameter"
50+
Start-Sleep -Seconds 1
51+
}
52+
process {
53+
Write-Verbose "Step-Two: PROCESS block. InputNumber=$InputNumber, Parameter=$Parameter"
54+
$Output = $InputNumber + 5
55+
Write-Output $Output
56+
Start-Sleep -Seconds 1
57+
}
58+
end {
59+
Write-Verbose "Step-Two: END block. Parameter=$Parameter"
60+
Start-Sleep -Seconds 1
61+
}
62+
clean {
63+
Write-Verbose "Step-One: CLEANUP block. Parameter=$Parameter"
64+
Start-Sleep -Seconds 1
65+
}
66+
}
67+
68+
function Step-Three {
69+
[CmdletBinding()]
70+
param (
71+
[Parameter(ValueFromPipeline = $true)]
72+
[int]$InputNumber,
73+
74+
[string]$Parameter = (Set-DefaultParameterValue -Parameter 'Step-Three-Default')
75+
)
76+
begin {
77+
Write-Verbose "Step-Three: BEGIN block. Parameter=$Parameter"
78+
Start-Sleep -Seconds 1
79+
}
80+
process {
81+
Write-Verbose "Step-Three: PROCESS block. InputNumber=$InputNumber, Parameter=$Parameter"
82+
$Output = $InputNumber - 2
83+
Write-Output $Output
84+
Start-Sleep -Seconds 1
85+
}
86+
end {
87+
Write-Verbose "Step-Three: END block. Parameter=$Parameter"
88+
Start-Sleep -Seconds 1
89+
}
90+
clean {
91+
Write-Verbose "Step-One: CLEANUP block. Parameter=$Parameter"
92+
Start-Sleep -Seconds 1
93+
}
94+
}
95+
96+
$VerbosePreference = 'Continue'
97+
1, 2, 3 | Step-One | Step-Two | Step-Three

0 commit comments

Comments
 (0)