Appearance
VMware Fusion 命令行完全指南:用 vmcli 无界面管理虚拟机

为什么需要命令行管理?
在日常开发或运维中,我们经常需要:
- 远程管理:通过 SSH 连接服务器,无需打开图形界面
- 资源节约:减少 GUI 资源占用,让 macOS 运行更流畅
- 批量操作:同时管理多台虚拟机
VMware Fusion 从 12.x 版本开始引入了 vmcli 命令行工具,成为官方推荐的 CLI 管理方式。
环境准备
1. 确认 VMware Fusion 版本
通过 VMWare Fusion -> 关于 VMWare Fusion 来查看版本信息

要求:Fusion 12.0+ 或 Fusion Pro 13.0+
2. 确认 vmcli 可用
bash
# 检查 vmcli 是否在 PATH 中
which vmcli
# 查看帮助
vmcli --help如果提示命令不存在,可以创建软链接:
bash
sudo ln -s /Applications/VMware\ Fusion.app/Contents/Public/vmcli /usr/local/bin/vmcli3. 找到虚拟机配置文件 (.vmx)
虚拟机配置文件通常位于:
bash
~/Documents/Virtual Machines.localized/每个虚拟机都是一个 .vmwarevm 文件夹,内部的 .vmx 文件就是核心配置文件。
基础操作指南
定义虚拟机路径变量(避免重复输入)
在 ~/.zshrc 或 ~/.bashrc 中添加:
bash
export UBUNTU_VMX="$HOME/Virtual Machines.localized/Ubuntu 22.04.vmwarevm/Ubuntu 22.04.vmx"路径注意事项
- 不要使用
~,要用$HOME或绝对路径 - 路径中的空格要用引号包裹
- 如果包含特殊字符,可能需要转义
1. 启动虚拟机(无界面)
bash
# 前台启动(会显示进度)
vmcli $UBUNTU_VMX Power Start
# 后台启动(推荐)
vmcli $UBUNTU_VMX Power Start &> /dev/null &2. 查询虚拟机状态
bash
vmcli $UBUNTU_VMX Power query输出示例:
PowerState: on
cleanShutdown: false
isGuestRebooted: true
isSoftReset: false
powerTypeForPowerOff: soft
powerTypeForPowerOn: soft
powerTypeForReset: soft
powerTypeForSuspend: soft3. 关闭虚拟机
bash
# 优雅关机(推荐)
vmcli $UBUNTU_VMX Power Stop -o trySoft
# 强制关机(相当于拔电源)
vmcli $UBUNTU_VMX Power Stop -o hard
# 严格要求 VMware Tools 配合关机
vmcli $UBUNTU_VMX Power Stop -o requireSoft注意
VMware 这个命令工具的 --help 文档存在错误!它显示参数是数字 <2, 3, 1, 0>,但实际传参必须使用字符串枚举值(trySoft、hard 等)。传数字会报错:Invalid argument: '0', valid enums are: trySoft, requireSoft, configDefault, hard
参数说明:
| 枚举值 | 行为 | 适用场景 |
|---|---|---|
trySoft | 先尝试 VMware Tools 软关机,失败则回退 ACPI(推荐) | 日常关机,数据安全 |
requireSoft | 严格要求 VMware Tools 关机,失败则报错 | 确保 Guest 配合关机 |
hard | 立即断电,不通知 Guest OS | 系统无响应时强制关机 |
configDefault | 使用虚拟机的默认配置(实测无效) | 不推荐使用 |
注意
VMWare Fusion 这个 vmcli 命令工具设计的跟他妈屎一样!
验证关机结果:
bash
# 执行关机
vmcli $UBUNTU_VMX Power Stop -o trySoft
# 查询状态确认
vmcli $UBUNTU_VMX Power query
# PowerState: off
# cleanShutdown: true ← true 表示正常关机,false 表示异常断电4. 挂起/恢复虚拟机
bash
# 正常挂起(推荐)
vmcli $UBUNTU_VMX Power Suspend -o trySoft
# 强制挂起(不通知 Guest OS)
vmcli $UBUNTU_VMX Power Suspend -o hard
# 严格要求 VMware Tools 配合挂起
vmcli $UBUNTU_VMX Power Suspend -o requireSoft注意
同样的问题:--help 显示参数是数字,但实际传参必须使用字符串枚举值(trySoft、hard 等)。
参数说明:
| 枚举值 | 行为 | 适用场景 |
|---|---|---|
trySoft | 尝试 VMware Tools 软挂起,失败则回退(推荐) | 日常挂起,快速恢复 |
requireSoft | 严格要求 VMware Tools 挂起,失败则报错 | 确保 Guest 配合挂起 |
hard | 立即挂起,不通知 Guest OS | 系统无响应时强制挂起 |
configDefault | 使用虚拟机的默认配置(实测无效) | 不推荐使用 |
从挂起状态恢复:
bash
# 直接使用 Power Start 即可恢复
vmcli $UBUNTU_VMX Power Start验证挂起是否成功:
bash
# 挂起后查询状态
vmcli $UBUNTU_VMX Power query
# PowerState: suspended ← 表示已挂起
# 恢复后再次查询
vmcli $UBUNTU_VMX Power query
# PowerState: on ← 表示已恢复运行实际测试结果:
bash
# 挂起前状态
vmcli $UBUNTU_VMX Power query
# PowerState: on
# 执行挂起
vmcli $UBUNTU_VMX Power Suspend -o trySoft
# 挂起后状态
vmcli $UBUNTU_VMX Power query
# PowerState: suspended使用场景:
bash
# 下班前挂起,节省资源
vmcli $UBUNTU_VMX Power Suspend -o trySoft
# 第二天上班恢复,秒级启动
vmcli $UBUNTU_VMX Power Start注意事项:
- 挂起状态会占用磁盘空间(相当于虚拟机内存大小)
- 相比关机,挂起后恢复速度极快(3-5 秒)
- 不建议长期挂起,定期重启虚拟机更健康
cleanShutdown: false是正常的,挂起不算正常关机
5. 重启虚拟机
bash
# 软重启(推荐)
vmcli $UBUNTU_VMX Power Reset -o trySoft
# 硬重启(立即重启,不通知 Guest OS)
vmcli $UBUNTU_VMX Power Reset -o hard
# 严格要求 VMware Tools 配合重启
vmcli $UBUNTU_VMX Power Reset -o requireSoft注意
同样的问题:--help 显示参数是数字,但实际传参必须使用字符串枚举值(trySoft、hard 等)。传数字会报错:Invalid argument: '2', valid enums are: trySoft, requireSoft, configDefault, hard
参数说明:
| 枚举值 | 行为 | 适用场景 |
|---|---|---|
trySoft | 先尝试 VMware Tools 软重启,失败则回退(推荐) | 日常重启,数据安全 |
requireSoft | 严格要求 VMware Tools 重启,失败则报错 | 确保 Guest 配合重启 |
hard | 立即重启,不通知 Guest OS | 系统无响应时强制重启 |
configDefault | 使用虚拟机的默认配置(实测无效) | 不推荐使用 |
验证重启结果:
bash
# 执行软重启
vmcli $UBUNTU_VMX Power Reset -o trySoft
# 查询状态确认
vmcli $UBUNTU_VMX Power query
# PowerState: on
# isSoftReset: true ← true 表示是软重启实际测试结果:
bash
# 重启前查询状态
vmcli $UBUNTU_VMX Power query
# PowerState: on
# cleanShutdown: false
# isGuestRebooted: false
# isSoftReset: false
# 执行软重启
vmcli $UBUNTU_VMX Power Reset -o trySoft
# 重启后查询状态
vmcli $UBUNTU_VMX Power query
# PowerState: on
# isSoftReset: true ← 确认是软重启故障排查
问题 1:路径不存在或变量未解析
现象:
vmcli: VMX : '~/path/to/vm.vmx' does not exist!解决方案:
- 不要用
~,要用$HOME - 正确示例:
export VMX="$HOME/path/to/vm.vmx"
问题 2:vmcli 命令找不到
解决方案:
bash
# 方法一:创建软链接
sudo ln -s /Applications/VMware\ Fusion.app/Contents/Public/vmcli /usr/local/bin/vmcli
# 方法二:添加到 PATH
export PATH="/Applications/VMware Fusion.app/Contents/Public:$PATH"
# 将上面这行加到 ~/.zshrc 或 ~/.bashrc
# 验证
which vmcli
vmcli --version参考资源
命令速查表
| 操作 | 正确命令 |
|---|---|
| 启动 | vmcli $VMX Power Start |
| 查询状态 | vmcli $VMX Power query |
| 正常关机 | vmcli $VMX Power Stop -o trySoft |
| 强制关机 | vmcli $VMX Power Stop -o hard |
| 软重启 | vmcli $VMX Power Reset -o trySoft |
| 硬重启 | vmcli $VMX Power Reset -o hard |
| 正常挂起 | vmcli $VMX Power Suspend -o trySoft |
| 强制挂起 | vmcli $VMX Power Suspend -o hard |
| 从挂起恢复 | vmcli $VMX Power Start |
| 获取 IP | vmcli $VMX Guest getipaddress |
总结
通过 vmcli 命令行工具,我们可以:
- 终端访问 - 无需打开 GUI,通过 SSH 即可操作
- 批量操作 - 同时管理多台虚拟机
- 资源节约 - 减少图形界面资源占用
- 灵活控制 - 支持启动/停止/挂起/重启等完整生命周期管理
掌握这些技巧后,你的 VMware Fusion 使用效率将大大提升!
