必须绕过Workstation图形界面干扰,直接用vmrun.exe静默启动、关闭、挂起虚拟机;需确认其路径并配置系统环境变量,编写含nogui参数的bat脚本,通过计划任务以最高权限延迟执行,方可实现稳定自动化控制。

在Windows系统中用vmrun命令行脚本自动化控制VMware虚拟机,必须绕过Workstation图形界面的干扰,直接调用底层工具启动、关闭、挂起指定虚拟机,否则脚本执行后只会打开空主窗口而不会加载任何虚拟机。
确认vmrun.exe位置并配置环境变量
先在资源管理器中打开VMware Workstation默认安装路径:【C:\Program Files (x86)\VMware\VMware Workstation】,检查目录下是否存在vmrun.exe文件;若不存在,请重新安装或修复Workstation 16.1.2及以上版本。
右键“此电脑”→属性→高级系统设置→环境变量→在“系统变量”中找到Path→编辑→新建→粘贴刚才确认的完整路径(不含vmrun.exe本身),例如:【C:\Program Files (x86)\VMware\VMware Workstation】。
打开新cmd窗口,输入vmrun回车;若显示帮助信息,则环境变量生效;若报“不是内部或外部命令”,说明路径未保存或含中文/特殊字符,需重设。
编写可静默启动虚拟机的bat脚本
新建文本文档,输入以下内容(注意引号为英文半角,路径必须真实存在):
@echo off
vmrun -T ws start "D:\VMs\Ubuntu22\Ubuntu22.vmx" nogui
timeout /t 3 /nobreak >nul
vmrun list
将D:\VMs\Ubuntu22\Ubuntu22.vmx替换为你自己的.vmx文件绝对路径;【nogui参数不可省略,否则会弹出GUI窗口阻塞后台运行】;timeout用于等待虚拟机初步加载完成,避免list命令查不到刚启动的实例。
保存后将.txt后缀改为.bat;双击运行该bat文件,观察命令行窗口是否快速闪退、虚拟机是否在Workstation界面中显示为“正在运行”状态。
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
通过计划任务实现开机自动启动
第一步:按Win+R输入taskschd.msc打开任务计划程序;
第二步:右侧点击“创建任务”,不要选“基本任务”;
第三步:“常规”选项卡中,勾选【不管用户是否登录都要运行】和【使用最高权限运行】;
第四步:“触发器”选项卡→新建→开始任务选择“登录时”→勾选“延迟任务时间”设为15秒(避开系统启动争抢);
第五步:“操作”选项卡→新建→程序或脚本填入cmd.exe,添加参数填入/c "D:\Scripts\vm-start.bat"(路径需为你实际bat文件位置)。
保存时系统会要求输入当前账户密码;若提示“操作被拒绝”,说明账户无本地管理员权限,需先以管理员身份运行任务计划程序再重试。
用一条命令查看所有已启动的虚拟机
在任意cmd窗口中直接运行:
vmrun list
该命令会输出当前由vmrun启动且仍在运行的所有虚拟机.vmx路径;如果返回为空但Workstation界面显示有运行中虚拟机,说明那些是手动点开的,不受脚本控制——只有用vmrun start启动的才计入list结果。
安全关闭虚拟机的两种可靠方式
方法一:软关机(推荐)
vmrun -T ws stop "D:\VMs\Ubuntu22\Ubuntu22.vmx" soft
该命令向客户机操作系统发送标准关机信号,前提是虚拟机内已安装VMware Tools;若未安装,会超时失败。
方法二:强制断电(仅应急)
vmrun -T ws stop "D:\VMs\Ubuntu22\Ubuntu22.vmx" hard
【hard操作不可逆,可能损坏虚拟磁盘文件,请严格避免在生产环境使用】

















