使用 VMwareovftool
查询虚拟机是否存在的规范方法是什么?
如果我运行这个命令:
ovftool vi://username@password@myvsphere/mydatacenter/vm/myvm
我可能会收到这样的回复:
Error: Got fault from server: The attempted operation cannot be
performed in the current state (Powered on).
Error: Fault cause: vim.fault.InvalidState
我知道我可以执行以下操作,然后寻找“定位器未引用对象”但是否有不同的命令或(一套)我可以运行选项,它将返回一个简单true
或false
其他简洁的内容,并不表示错误?
ovftool vi://username@password@myvsphere/mydatacenter/vm/avmthatisnothere
仅供参考,以上返回的是:
Error: Locator does not refer to an object:
vi://username@password@myvsphere/mydatacenter/vm/avmthatisnothere
答案1
您无法在虚拟机运行时请求对虚拟机进行操作,但您的输出也表明您查询的虚拟机确实存在。因此,如果您获得类似以下内容的输出:
Error: Got fault from server: The attempted operation cannot be performed in the current state (Powered on).
Error: Fault cause: vim.fault.InvalidState
VM 确实存在并且处于开启状态。
如果你得到类似的信息
Error: Locator does not refer to an object: vi://...
该对象/VM 不存在。
我无法测试虚拟机存在但已关闭的情况,但我相信您将获得有关托管虚拟机的数据存储的信息等。
不幸的是,这里没有简单的 true/false 命令。您可以将其包装在脚本中,但您必须解析命令的输出(stdout 和 stderr)才能做出决策。
答案2
你用错了工具。你不能用叉子盛啤酒。
VMware OVF Tool 是一个命令行实用程序,允许您从许多 VMware 产品导入和导出 OVF 包。
要检查具有该名称的虚拟机是否myVM
存在,您应该尝试 PowerCLI:
Get-VM -Name myVM
https://developer.vmware.com/docs/powercli/latest/vmware.vimautomation.core/commands/get-vm/#Default