如何从 powercli 获取虚拟机的第一个数据存储名称
How to get first datastore name of virtual maschine from powercli
我正在制作一些脚本,但遇到了问题。假设我在 ESXi 上有 2 个虚拟机,第一个虚拟机名称是 VM1,第二个是 VM2。
VM1 位于一个名为 DISK1 的数据存储上,
VM2 位于名为 DISK2 和 DISK3
的两个数据存储上
当我 运行 powercli 并连接到服务器并启动命令时
((get-vm "NAMEofVM" | Get-Datastore | Select-Object -Property name)[0]).name
如果我用 VM1 替换 "NAMEofVM",结果将是
DISK1
如果我用 VM2 替换 "NAMEofVM" 结果将是
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
如何解决?我只想获取第一个数据存储而不是所有数据存储。
我猜您遇到了问题,因为 Get-Datastore
可能 return 只有一个元素,并且错误中列出的类型支持 System.Management.Automation.PSObject
。我们可以使用 Select-Object
来完成工作
,而不是尝试使用 [0]
索引到数组中
Get-VM "NAMEofVM" | Get-Datastore | Select-Object -ExpandProperty name -First 1
或者,如您所说,这是一个更简洁的选项。如果您这样做,指定 -Property
将是多余的。
(get-vm "NAMEodVM" | Get-Datastore | Select-Object -First 1).name
我正在制作一些脚本,但遇到了问题。假设我在 ESXi 上有 2 个虚拟机,第一个虚拟机名称是 VM1,第二个是 VM2。
VM1 位于一个名为 DISK1 的数据存储上, VM2 位于名为 DISK2 和 DISK3
的两个数据存储上当我 运行 powercli 并连接到服务器并启动命令时
((get-vm "NAMEofVM" | Get-Datastore | Select-Object -Property name)[0]).name
如果我用 VM1 替换 "NAMEofVM",结果将是
DISK1
如果我用 VM2 替换 "NAMEofVM" 结果将是
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
如何解决?我只想获取第一个数据存储而不是所有数据存储。
我猜您遇到了问题,因为 Get-Datastore
可能 return 只有一个元素,并且错误中列出的类型支持 System.Management.Automation.PSObject
。我们可以使用 Select-Object
来完成工作
[0]
索引到数组中
Get-VM "NAMEofVM" | Get-Datastore | Select-Object -ExpandProperty name -First 1
或者,如您所说,这是一个更简洁的选项。如果您这样做,指定 -Property
将是多余的。
(get-vm "NAMEodVM" | Get-Datastore | Select-Object -First 1).name