据我了解,这是一个非常简单的问题。这里有很多类似的问题,但是我无法确切找到我所需要的。我想念什么?

预期输出

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

10-04 13:04