如何列出已安装的 ISO 并从 VMware ESXi 的命令行卸载它们?

roe*_*eer 5 vmware-esxi

我有一台 VMware ESXi 6 主机,上面运行着多个来宾。这些客户端中的一个或多个正在使用具有 ISO 文件的数据存储。我正在通过 ssh 从 linux 访问 ESXi 主机,因此 PowerCLI 不是一个选项。

问题 1:我如何从 VMware CLI 中找出安装了此 ISO 文件的客户机?

问题 2:一旦我知道了这一点,我该如何从这些来宾以及 VMware CLI 卸载此 ISO 文件?

我希望它是vim-cmd vmsvc子命令,但我找不到它们。

use*_*391 6

通过 SSH 在 shell 上快速而粗略的解决方案是编写一个连接多个操作的小脚本:

  1. 获取您的虚拟机 ID vim-cmd vmsvc/getallvms|awk '{print $1}'|grep -o -E '[0-9]+'(列出所有虚拟机,仅使用 awk 显示第一列,使用 grep 过滤掉 IP 和文本以及空行)
  2. 如果在每个 VM 的设备列表中发现您选择的 ISO 名称出现一次,则遍历各行(ash没有类似的数组bash)并检查每个数字/ID:(vim-cmd vmsvc/device.getdevices yourVmId|grep -o -A 12 -E 'yourImageName.iso' | grep -c 'connected = true'列出所有设备,获取 ISO 文件周围的区域,检查如果 ISO 当前已安装/活动)
  3. 使用同一个初始列表中的修改过的 grep 获取每个 CD 驱动器的设备 ID(假设它只有一个,更改一台机器上多个驱动器的代码):(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
  4. 使用vim-cmd vmsvc/device.connection yourVmId yourDeviceId disconnect断开装置。(编辑:这似乎不完全正确,它做了一些事情,但不是我所期望的。当我有时间进一步调查时,我会更新)

我遇到的唯一问题是,在执行最后一步时,VSphere 客户端可能会出现消息“来宾锁定 CD 驱动器”,但也许这通常可以禁用。