我有一个PowerShell函数(Out()
)。当我想得到一个结果时,它从pipline获取最后一个对象。例如:我想在(gps
)中显示所有对象:
function Out() {
[CmdletBinding()]
[Alias()]
Param(
[Parameter(Mandatory=$false,
ValueFromPipeline=$true,
Position=0)]
$Out
)
$Out
}
结果:
PS C:\> gps | Out Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 505 27 7796 6220 0.78 13160 0 wmpnetwk
答案 0 :(得分:1)
将输出放在Process {}
块中:
function Out() {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$false, ValueFromPipeline=$true, Position=0)]
$Out
)
Process {
$Out
}
}
为从管道接收的每个对象调用该块。
过程
此块用于为函数提供逐个记录的处理。此块可能会被使用多次,或者根本不会被使用,具体取决于函数的输入。例如,如果函数是管道中的第一个命令,则将使用Process块一次。如果该函数不是管道中的第一个命令,则
Process
块对于函数从管道接收的每个输入都使用一次。如果没有管道输入,则不使用Process
块。如果将函数参数设置为接受管道输入,则必须定义此块。如果未定义此块并且参数接受来自管道的输入,则该函数将错过通过管道传递给函数的值。