据我了解,这是一个非常简单的问题。这里有很多类似的问题,但我无法找到我需要的东西。我缺少什么?
预期产出
1 2 3
Run Code Online (Sandbox Code Playgroud)
实际输出(误差)
cmdlet ForEach-Object at command pipeline position 1
Supply values for the following parameters:
Process[0]:
Run Code Online (Sandbox Code Playgroud)
代码
function processItem {
param($item)
Process {
$item
}
}
$collection = @(1,2,3)
$collection | foreach-object | processItem
Run Code Online (Sandbox Code Playgroud)
小智 5
首先,您不必Foreach-Object在此处使用,因为管道将直接解包$items并将一个值一次发送到您的函数processItem。
如果函数返回多个值,PowerShell 会将它们包装在一个数组中。但是,如果将结果传递给管道内的另一个函数,管道会自动“展开”数组并一次处理一个数组元素。
函数中的参数$item不接受代码中的管道输入,您应该ValueFromPipeline像这样使用:
function processItem {
param([parameter(ValueFromPipeline=$true)]$item)
Process {
$item
}
}
Run Code Online (Sandbox Code Playgroud)
像这样使用:
$items = @(1, 2, 3)
$items | processItem
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
862 次 |
| 最近记录: |