Powershell:使用管道和对象时的输出不同

时间:2013-06-18 07:47:34

标签: powershell powershell-v3.0

get-service| get-member #gives output.

虽然

$a= get-service 
get-member $a # generates error 
"get-member : No object has been specified to the get-member cmdlet.
At line:1 char:1
+ get-member $a
+ ~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Get-Member], InvalidOperationException
    + FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Commands.GetMemberCommand"

为什么这样?

1 个答案:

答案 0 :(得分:3)

get-service| get-member将每个服务对象一次一个地发送到Get-Member cmdlet。每个对象都绑定到InputObject参数(ByValue)并进行相应处理。

执行get-member $a时,您将$ a传递给第一个位置参数,即Name参数,而不是InputObject参数。为了获得$ a(集合本身)的成员:

Get-Member -InputObject $a