PowerShell Select-Object返回超过指定的数量?

时间:2013-08-14 22:39:43

标签: powershell hyper-v

为什么以下命令返回的属性多于Select?

$obj = Get-VM | Select VMName,State; $obj

输出:

VMName         : blah-blah
State          : Off
PSComputerName : host
RunspaceId     : URI

我如何才能获得State的价值?

$obj = Get-VM | Select VMName,State; $obj.State

以上应该做的但不是:(

2 个答案:

答案 0 :(得分:2)

工作,但听起来出于某种原因, Get-VM 的结果分配给 $ obj 之前发生了任何东西都被管道传输到选择。在提示符下单独尝试Get-VM | select VMName, State,如果您获得了预期的结果,请尝试以下操作:

$obj = (Get-VM | select VMName, State); $obj

要获得 State 属性,您可以执行以下操作:

(Get-VM).State

答案 1 :(得分:0)

发现问题:)

上面的命令很好,但是当它被包装在一个Invoke-Command中以便它在另一台机器上运行时,结果被修改为包含运行特定信息并且需要'后续选择'像这样:

Invoke-Command -Comuptername XXXX -ScriptBlock {$obj = Get-VM | Select VMName,State; $obj} | Select State