0

为什么以下命令返回的属性比 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

以上应该可以解决问题,但不能:(

4

2 回答 2

2

应该可行,但听起来出于某种原因,在将任何内容通过管道传输到select之前,将Get-VM的结果分配给$obj。在提示符下自行尝试,如果得到预期结果,请尝试以下操作:Get-VM | select VMName, State

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

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

(Get-VM).State
于 2013-08-14T23:12:13.470 回答
0

发现问题:)

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

Invoke-Command -Comuptername XXXX -ScriptBlock {$obj = Get-VM | Select VMName,State; $obj} | Select State
于 2013-08-15T23:23:27.677 回答