Powershell 如何将foreach对象输出传递给接受管道输入的函数?

Powershell 如何将foreach对象输出传递给接受管道输入的函数?,powershell,Powershell,据我所知,这是一个非常简单的问题。这里有很多类似的问题,但我还没有找到我真正需要的。我错过了什么 预期产量 实际输出误差 代码 首先,这里不必使用Foreach对象,因为管道将直接展开$items并一次向函数processItem发送一个值 如果函数返回多个值,PowerShell会将它们包装到数组中。但是,如果将结果传递给管道内的另一个函数,管道将自动展开阵列,并一次处理一个阵列元素 函数中的参数$item不接受代码中的管道输入,应使用ValueFromPipeline,如下所示: funct

据我所知,这是一个非常简单的问题。这里有很多类似的问题,但我还没有找到我真正需要的。我错过了什么

预期产量

实际输出误差

代码


首先,这里不必使用Foreach对象,因为管道将直接展开$items并一次向函数processItem发送一个值

如果函数返回多个值,PowerShell会将它们包装到数组中。但是,如果将结果传递给管道内的另一个函数,管道将自动展开阵列,并一次处理一个阵列元素

函数中的参数$item不接受代码中的管道输入,应使用ValueFromPipeline,如下所示:

function processItem {
  param([parameter(ValueFromPipeline=$true)]$item)
  Process {
    $item
  }
}
这样使用:

function processItem {
  param([parameter(ValueFromPipeline=$true)]$item)
  Process {
    $item
  }
}

首先,这里不必使用Foreach对象,因为管道将直接展开$items并一次向函数processItem发送一个值

如果函数返回多个值,PowerShell会将它们包装到数组中。但是,如果将结果传递给管道内的另一个函数,管道将自动展开阵列,并一次处理一个阵列元素

函数中的参数$item不接受代码中的管道输入,应使用ValueFromPipeline,如下所示:

function processItem {
  param([parameter(ValueFromPipeline=$true)]$item)
  Process {
    $item
  }
}
这样使用:

function processItem {
  param([parameter(ValueFromPipeline=$true)]$item)
  Process {
    $item
  }
}

对于类型“System.Management.Automation.CmdletBindingAttribute”找不到错误属性“AcceptValueFromPipeline”,很高兴帮助您:D接受答案以便其他人可以找到它。对于类型“System.Management.Automation.CmdletBindingAttribute”,找不到错误属性“AcceptValueFromPipeline”,很高兴帮助您:D接受回答,以便其他人能找到它。
$items = @(1, 2, 3)
$items | processItem