我尝试编写一个Powershell脚本,它接受来自管道的目录作为命名参数。我的参数声明看起来像
param([Parameter(Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelinebyPropertyName=$true)] [System.IO.DirectoryInfo[]] $PsPath)
我的问题是电话
gci c:\ -Directory | MyScript
只导致gci
结果的最后一个元素在输入数组中。这有什么不对?
提前致谢, 克里斯托弗
答案 0 :(得分:5)
您需要将执行代码包装到PROCESS块中:
function MyScript {
param(
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelinebyPropertyName=$true)]
[System.IO.DirectoryInfo[]] $PsPath
)
PROCESS {
$PsPath
}
}
gci c:\ -Directory | MyScript
唐·琼斯有一个很好的BEGIN,PROCESS,& END阻止此处:http://technet.microsoft.com/en-us/magazine/hh413265.aspx