有没有办法在通过管道传输后访问输入对象?

Is there a way to access the input object after it was piped?

有没有一种方法可以将整个对象通过管道输送并一步处理提到的对象?简单地说,管道另一侧的 $PSItem 变量应该与通过管道的整个对象具有相同的值。

我发现以下方法在 posh 中有一种匿名函数,尽管它分别处理输入对象中的每个项目(因为这是高级函数中的进程块的目的)。

为此代码:

Get-Service | & {process {return $_.length}}

Returns: 1 1 1 1 1 1 1..

我正在寻找的是一种在管道之后使用 $_/$PSItem 变量访问完整对象并进一步处理它/此对象的 return 属性的方法。

PowerShell 中的进程块可以将单个成员数组作为其输入,然后使用数组的整个成员而不是对象的所有成员来处理。

使用逗号运算符可以以一种简单的方式创建单个成员数组。 Further information about Operators

以下代码使用逗号运算符将Get-Process返回的对象数组放入单个成员数组中。

,(Get-Process)

您现在可以自由使用管道中的对象并访问它的属性。

,(Get-Process) | & {process {if($_.length -ge 10) {return "Greater / equals 10"}else{return "Smaller than 10"}}}