VM虚拟机开关机管理(脚本),全面版

该文章已生成可运行项目,

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、设置开机自动启动

  1. 输入“shell:startup”,打开用户启动文件夹,将上述启动的脚本放到这个文件夹下。

3、设置关机自动挂起

  1. 执行“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 快照名)

本文章已经生成可运行项目
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值