我正在编写一些脚本而且我遇到了问题。假设我在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
如何解决?我想只得到第一个数据存储而不是全部数据存储。
答案 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