如何从powercli获取虚拟机的第一个数据存储区名称

时间:2015-02-03 13:05:02

标签: powershell scripting vmware powercli

我正在编写一些脚本而且我遇到了问题。假设我在ESXi上有2个VM,第一个vm名称是VM1,第二个是VM2。

VM1位于一个名为DISK1的数据存储区中, VM2位于名为DISK2和DISK3

的两个数据存储中

当我运行powercli并连接到服务器并启动类似

的命令时

((get-vm "NAMEofVM" | Get-Datastore | Select-Object -Property name)[0]).name

如果我更换" NAMEofVM"通过VM1结果将是

DISK1

如果我替换" NAMEofVM"通过VM2结果将是

    Unable to index into an object of type System.Management.Automation.PSObject.
At line:1 char:66
+ ((get-vm VM2 | Get-Datastore | Select-Object -Property name)[ <<<< 0]).na
me
    + CategoryInfo          : InvalidOperation: (0:Int32) [], RuntimeException
    + FullyQualifiedErrorId : CannotIndex

如何解决?我想只得到第一个数据存储而不是全部数据存储。

1 个答案:

答案 0 :(得分:0)

猜测您遇到了问题,因为Get-Datastore可能只返回一个元素,并且错误中列出的类型支持System.Management.Automation.PSObject。我没有尝试使用[0]索引数组,而是使用Select-Object来完成工作

Get-VM "NAMEofVM" | Get-Datastore | Select-Object -ExpandProperty name -First 1

或者,就像你说的那样,这是一个更简洁的选择。如果你这样做,那么指定-Property将是多余的。

(get-vm "NAMEodVM" | Get-Datastore | Select-Object -First 1).name