我有一个 VMware ESXi 6 主机,上面运行着几个来宾。有一个带有 ISO 文件的数据存储区正在由这些客户端中的一个或多个使用。我正在通过 ssh 从 linux 访问 ESXi 主机,因此不能选择 PowerCLI。
问题 1:如何从 VMware CLI 找出哪些客户机挂载了这个 ISO 文件?
问题 2:一旦我知道了这一点,我该如何从这些来宾以及 VMware CLI 中卸载此 ISO 文件?
我希望它是vim-cmd vmsvc
子命令,但我无法找到它们。
我有一个 VMware ESXi 6 主机,上面运行着几个来宾。有一个带有 ISO 文件的数据存储区正在由这些客户端中的一个或多个使用。我正在通过 ssh 从 linux 访问 ESXi 主机,因此不能选择 PowerCLI。
问题 1:如何从 VMware CLI 找出哪些客户机挂载了这个 ISO 文件?
问题 2:一旦我知道了这一点,我该如何从这些来宾以及 VMware CLI 中卸载此 ISO 文件?
我希望它是vim-cmd vmsvc
子命令,但我无法找到它们。
通过 SSH 在 shell 上的一个快速且粗略的解决方案是编写一个连接多个操作的小脚本:
vim-cmd vmsvc/getallvms|awk '{print $1}'|grep -o -E '[0-9]+'
(列出所有虚拟机,仅使用 awk 显示第一列,过滤掉 IP 和文本以及使用 grep 的空行)ash
没有类似的数组bash
)并检查每个数字/ID:(vim-cmd vmsvc/device.getdevices yourVmId|grep -o -A 12 -E 'yourImageName.iso' | grep -c 'connected = true'
列出所有设备,获取 ISO 文件周围的区域,检查如果 ISO 当前已安装/激活)vim-cmd vmsvc/device.getdevices yourVmId|grep -o -B 4 -E 'yourImageName.iso'|grep -o -E 'key = [0-9]+'|grep -o -E '[0-9]+'
由于缺少组选项,需要双 grep-P
)vim-cmd vmsvc/device.connection yourVmId yourDeviceId disconnect
断开设备。(编辑:这似乎不完全正确,它做了一些事情,但不是我所期望的。当我有时间进一步调查时,我会更新)我遇到的唯一问题是在执行最后一步时,VSphere 客户端中可能会出现“CD 驱动器已被访客锁定”的消息,但通常可以禁用此功能。
使用 PowerCLI...
或者只是为“几个”虚拟机手动执行。
或者通过安装后卸载来避免这种情况。