为什么以下命令返回的属性多于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
以上应该做的但不是:(
答案 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