Windows环境下VMware虚拟机的自启动与自动关机--命令行操作
思路:
1、编辑vmware启动和挂起脚本
#使用VMrun工具启动虚拟机脚本如下:
“C:\Program Files (x86)\VMware\VMware Workstation\vmrun” start “D:\VMWare\Mint 64-bit-dns&ntp\Mint 64-bit.vmx” nogui
#使用VMrun工具挂起虚拟机脚本如下:
“C:\Program Files (x86)\VMware\VMware Workstation\vmrun” suspend “D:\VMWare\Mint 64-bit-dns&ntp\Mint 64-bit.vmx”
2、设置开机自动启动
- 输入“shell:startup”,打开用户启动文件夹,将上述启动的脚本放到这个文件夹下。
3、设置关机自动挂起
- 执行“gpedit.msc”,逐级打开“本地计算机策略”—>“计算机配置”—>“Windows设置”—>“脚本”,在窗口右栏中点击“关机”。
实现:
1、将虚拟机安装目录加入环境变量(便于使用命令不带地址)

2、系统开机自启动VMware虚拟机
关于这项功能,本次采用“定制计划任务项”
需要注意的是,计划任务项中的命令不是使用很多文章介绍的 VMware -x …….,而是使用 VMrun,完整命令行为:
%PATH%\VMrun -T ws start “虚拟机vmx配置文件全路径名”
vmrun 程序与 VMware 在同一个目录中。使用 vmrun 的理由同样是为了能实现虚拟机的自动关机和自动挂起。
按windows+R打开运行,输入shell:startup后点确定(或按回车键)打开启动文件夹,然后把需要开机启动的软件快捷方式复制进去就OK了。
shell:startup

部分失败的原因:
win10系统,只要是图标右下角带盾牌标志的软件,加入系统的启动文件夹:如:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 里面,每次开机后都会启动失败!据说这个是win10出于系统安全考虑,加入了UAC,对系统管理员权限做了限制造成的。
解决办法:
运行输入gpedit.msc打开组策略(家庭版没有组策略功能)
依次展开计算机配置-》Windows设置-》安全设置-》本地策略-》安全选项-》用户账户控制:以管理员批准模式运行所有管理员,设置为已禁用

设置完成后重启电脑策略生效,之前添加的开机启动项也可以自动运行了。
3、系统关机时自动关闭、挂起 VMware 虚拟机
在使用 vmrun 启动虚拟机后,可以使用 vmrun list 命令查看当前正在运行的虚拟机。
vmrun stop “虚拟机vmx配置文件全路径名” soft
注意,命令行最后的 soft 一定别漏了,作用就相当于按Windows及其的电源键,会使虚拟机执行操作系统指定的关机程序。由此也可以看出,这种关机方式只支持Windows、Linux等虚拟机。
而对于不识别软关机指令的虚拟机操作系统,建议在主机关机时挂起该虚拟机,命令是:
vmrun suspend “虚拟机vmx配置文件全路径名”
那么如何在主机关机的时候能自动执行虚拟机的关闭或挂起呢?这里就需要用到Windows的组策略。执行“gpedit.msc”,逐级打开“本地计算机策略”—>“计算机配置”—>“Windows设置”—>“脚本”,在窗口右栏中点击“关机”,把需要执行的关机或挂起命令写入一个 .bat 批处理程序中,添加到这里即可。
需要说明的是,系统关机脚本的执行时机是系统注销所有用户登录后、系统关机之前,因此,对于从Windows登录用户界面启动的虚拟机,这些命令是不会起作用的,因为在用户注销的时候,Windows系统已经自动停止了用户的虚拟机进程。
脚本文件内容:
@echo off &setlocal enabledelayedexpansion:隐藏显示窗口及命令
startVM.bat
@echo off &setlocal enabledelayedexpansion
vmrun -vp fhdsjh@ksjfvd! start "D:\Program Files (x86)\VMware\Windows 11 x64\Windows 11 x64.vmx" nogui
vmrun -T ws start "D:\Program Files (x86)\VMware\CentOS 7 64 λ\CentOS 7 64 λ.vmx" nogui
exit;
stopVM.bat
@echo off &setlocal enabledelayedexpansion
vmrun stop "D:\Program Files (x86)\VMware\CentOS 7 64 λ\CentOS 7 64 λ.vmx" soft
vmrun -vp csdjjjoj39!234# stop "D:\Program Files (x86)\VMware\Windows 11 x64\Windows 11 x64.vmx" soft
exit;
suspend.bat
vmrun suspend "D:\Program Files (x86)\VMware\CentOS 7 64 λ\CentOS 7 64 λ.vmx"
vmrun -vp 3454#sd%$12 suspend "D:\Program Files (x86)\VMware\Windows 11 x64\Windows 11 x64.vmx"
exit;
附加内容:
vmrun -T ws start "/opt/VMware/win2k8r2.vmx" nogui
# 启动无图形界面虚拟机
#(-T 是区分宿主机的类型,ws|server|server1|fusion|esx|vc|player,比较常用的是ws、esx和player)
vmrun start "/opt/VMware/win2k8r2.vmx" gui
# 启动带图形界面虚拟机
vmrun stop "/opt/VMware/win2k8r2.vmx" hard | soft
# 强制关闭虚拟机(相当于直接关电源) | 正常关闭虚拟机
vmrun reset "/opt/VMware/win2k8r2.vmx" hard | soft
# 冷重启虚拟机 | 热重启虚拟机
vmrun suspend "/opt/VMware/win2k8r2.vmx" hard | soft
# 挂起虚拟机(可能相当于休眠)
vmrun pause "/opt/VMware/win2k8r2.vmx"
# 暂停虚拟机
vmrun unpause "/opt/VMware/win2k8r2.vmx"
# 停止暂停虚拟机
vmrun list
# 列出正在运行的虚拟机
ps aux | grep vmx
# 另一种查看正在运行虚拟机的方法
vmrun -T ws snapshot "/opt/VMware/win2k8r2.vmx" snapshotName
# 创建一个快照(snapshotName 快照名) 创建快照时最好停止虚拟机再创建,这样创建的快照比运行虚拟机时要小很多。
vmrun -T ws reverToSnapshot "/opt/VMware/win2k8r2.vmx" snapshotName
# 从一个快照中恢复虚拟机(snapshotName 快照名)
vmrun -T ws listSnapshots "/opt/VMware/win2k8r2.vmx"
# 列出虚拟机快照数量及名称
vmrun -T ws deleteSnapshot "/opt/VMware/win2k8r2.vmx" snapshotName
# 删除一个快照(snapshotName 快照名)
471

被折叠的 条评论
为什么被折叠?



