必须通过VBoxManage命令行批量操作,否则图形界面逐台操作效率极低;需先验证环境、用引号包裹含空格名称,再用for循环或拼接命令启停虚拟机,快照须关机后创建,删除虚拟机加--delete才彻底清除磁盘文件。

要在Windows中用VBoxManage批量启停、快照、销毁多台VirtualBox虚拟机,必须绕过图形界面逐台操作的低效方式,直接在命令行中通过名称或UUID批量调用子命令——否则每次操作三台以上虚拟机就得重复点击十几次,极易漏配或误关。
确认环境与基础准备
打开CMD或PowerShell,先验证VBoxManage是否可用:输入 VBoxManage --version。若提示“不是内部或外部命令”,说明未将VirtualBox安装路径加入系统PATH;默认路径为 C:\Program Files\Oracle\VirtualBox\,需手动添加至环境变量并重启终端。
执行 VBoxManage list vms 查看所有已注册虚拟机,输出格式为 "VM Name" {uuid}。注意:名称含空格时,后续所有命令中必须用英文双引号包裹,否则会报错 VBoxManage: error: Could not find a registered machine named 'xxx'。
批量启动/关闭多台虚拟机
方法一:用for循环一次性启动指定名称的多台虚拟机(适用于名称已知且无空格)
for %i in (ubuntu-dev centos-test win10-dev) do VBoxManage startvm "%i" --type headless
方法二:按UUID批量启动(更可靠,避免名称歧义)
先提取UUID列表:VBoxManage list vms | findstr "{" > uuids.txt,再用脚本读取执行。实际常用写法是直接拼接:
VBoxManage startvm "ubuntu-dev" --type headless && VBoxManage startvm "centos-test" --type headless && VBoxManage startvm "win10-dev" --type headless
关闭时推荐使用ACPI软关机,避免数据损坏:VBoxManage controlvm "ubuntu-dev" acpipowerbutton。强制断电仅在卡死时使用:【poweroff操作不可逆,未保存的数据将丢失】。
批量创建快照并命名
第一步:确保所有目标虚拟机处于**关闭状态**,否则快照创建会失败并报错“machine is locked”。
第二步:为每台虚拟机创建带时间戳的快照
VBoxManage snapshot "ubuntu-dev" take "pre-update-20261110" --description "Before kernel upgrade"
VBoxManage snapshot "centos-test" take "pre-deploy-20261110" --description "Before Ansible rollout"
第三步:验证快照是否写入成功
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
VBoxManage snapshot "ubuntu-dev" list → 输出中应包含刚创建的快照名及对应UUID。
批量删除虚拟机及其全部数据
方法一:仅注销虚拟机(保留硬盘文件)
VBoxManage unregistervm "old-test-vm"
方法二:彻底删除(含.vdi/.vmdk等磁盘文件)
VBoxManage unregistervm "old-test-vm" --delete
⚠️ 注意:该操作不可撤销,【--delete参数一旦执行,硬盘文件将被永久移除,回收站中也无法恢复】。建议删除前先用 VBoxManage list hdds 确认关联硬盘路径,必要时手动备份。
批量修改内存与CPU配置
必须在虚拟机**完全关闭**状态下执行,运行中修改会报错“error: The machine 'xxx' is not powered off”。
调整ubuntu-dev内存至3072MB、CPU数为3核:
VBoxManage modifyvm "ubuntu-dev" --memory 3072 --cpus 3
为centos-test启用嵌套分页加速虚拟化性能:
VBoxManage modifyvm "centos-test" --nestedpaging on
修改完成后无需重启VBoxManage进程,配置已实时写入XML设置文件。










