解决了:
以下是使用管道输入的函数/脚本的最简单示例.每个行为与管道到“echo”cmdlet的行为相同.
作为功能:
Function Echo-Pipe { Begin { # Executes once before first item in pipeline is processed } Process { # Executes once for each pipeline object echo $_ } End { # Executes once after last pipeline object is processed } } Function Echo-Pipe2 { foreach ($i in $input) { $i } }
作为脚本:
#Echo-Pipe.ps1
Begin { # Executes once before first item in pipeline is processed } Process { # Executes once for each pipeline object echo $_ } End { # Executes once after last pipeline object is processed }
#Echo-Pipe2.ps1
foreach ($i in $input) { $i }
例如.
PS > . theFileThatContainsTheFunctions.ps1 # This includes the functions into your session PS > echo "hello world" | Echo-Pipe hello world PS > cat aFileWithThreeTestLines.txt | Echo-Pipe2 The first test line The second test line The third test line
您还可以选择使用高级功能,而不是上面的基本方法:
function set-something { param( [Parameter(ValueFromPipeline=$true)] $piped ) # do something with $piped }
很明显,只有一个参数可以直接绑定到管道输入.但是,您可以将多个参数绑定到管道输入上的不同属性:
function set-something { param( [Parameter(ValueFromPipelineByPropertyName=$true)] $Prop1,[Parameter(ValueFromPipelineByPropertyName=$true)] $Prop2,) # do something with $prop1 and $prop2 }
希望这可以帮助您学习另一个shell.