原文链接:http://lhhwsr.blog.sohu.com/241003589.html


今天突发奇想,是否可以用命令行挂起vm的虚拟机呢,这样每次定时关机之前用它挂起一下,就不用第二天手工再运行虚拟机的软件了,在网上查了下资料,留个记录,备查。配合前一篇的手工计划任务,非常完美!

注:挂起参数是suspend,后面没有ed,原网站资料介绍错误。

 

VMware虚拟机已被许多IT工程师所接受并广泛使用。

在使用中,为了方便,我们有了这样的需求:能否在系统启动的时候让虚拟机也同时自动启动?能否在系统关闭时,让虚拟机也自动关机?答案是可以的,方法如下:

1、系统开机自启动VMware虚拟机

关于这项功能,网上很多文章介绍其解决办法,主要有两种:“使用工具将虚拟机加载为Windows系统服务”和“定制计划任务项”,本人推荐使用后面一种,即“定制计划任务项”,理由主要是:采用这种方案可以实现虚拟机的自动关机或自动挂起,而用Windows系统服务的方式,我们能试验成功虚拟机的自动关机和自动挂起。

需要注意的是,计划任务项中的命令不是使用很多文章介绍的 VMware -x .......,而是使用 VMrun,完整命令行为:

%PATH%\VMrun -T ws start "虚拟机vmx配置文件全路径名"

vmrun 程序与 VMware 在同一个目录中。使用 vmrun 的理由同样是为了能实现虚拟机的自动关机和自动挂起。

至于定制计划任务的其他输入项,在此就不啰嗦了。

2、系统关机时自动关闭、挂起 VMware 虚拟机

在使用 vmrun 启动虚拟机后,可以使用 vmrun list 命令查看当前正在运行的虚拟机。

而关闭虚拟机的命令是: vmrun stop "虚拟机vmx配置文件全路径名" soft

注意,命令行最后的 soft 一定别漏了,作用就相当于按Windows及其的电源键,会使虚拟机执行操作系统指定的关机程序。由此也可以看出,这种关机方式只支持Windows、Linux等虚拟机。

而对于不识别软关机指令的虚拟机操作系统,建议在主机关机时挂起该虚拟机,命令是:

vmrun suspend "虚拟机vmx配置文件全路径名"

上面只是说了如何关闭和挂起虚拟机,那么如何在主机关机的时候能自动执行虚拟机的关闭或挂起呢?这里就需要用到Windows的组策略。

执行“gpedit.msc”,逐级打开“本地计算机策略”-->“计算机配置”-->“Windows设置”-->“脚本”,在窗口右栏中点击“关机”,把需要执行的关机或挂起命令写入一个 .bat 批处理程序中,添加到这里即可。

需要说明的是,系统关机脚本的执行时机是系统注销所有用户登录后、系统关机之前,因此,对于从Windows登录用户界面启动的虚拟机,这些命令是不会起作用的,因为在用户注销的时候,Windows系统已经自动停止了用户的虚拟机进程。

3、对于win7环境中关机脚本的问题

在win7环境中,在执行关机脚本之前,win7会强制终止所有非系统进程,关机脚本还是不会发生作用。这是可以修改如下设置:

执行“gpedit.msc”,逐级打开“本地计算机策略”-->“计算机配置”-->“管理模板”-->“系统”-->“关机选项”,将“关闭会阻止或取消关机的应用程序的自动终止功能”策略启用,即可让我们设定的用于关闭虚拟机的Windows关机脚本生效。