据我了解,这是一个非常简单的问题。这里有很多类似的问题,但是我无法确切找到我所需要的。我想念什么?
预期输出
1 2 3
实际输出(错误)
cmdlet ForEach-Object at command pipeline position 1
Supply values for the following parameters:
Process[0]:
代码
function processItem {
param($item)
Process {
$item
}
}
$collection = @(1,2,3)
$collection | foreach-object | processItem
最佳答案
首先,您不必在这里使用Foreach-Object
,因为管道将直接解包$items
并一次将一个值发送到函数processItem
。
函数中的参数$item
不接受代码中的管道输入,您应使用ValueFromPipeline
像这样:
function processItem {
param([parameter(ValueFromPipeline=$true)]$item)
Process {
$item
}
}
像这样使用:$items = @(1, 2, 3)
$items | processItem