批处理控制VMWare虚拟机


VMWare 确实是好东西,不过安装之后会增加四个自动启动的服务以及两个虚拟的网络连接。我是比较讨厌这种没事就占着系统资源的东西,何况也不是经常要用着 VMWare ,所以写了个批处理脚本来自动启动/关闭 VMWare 虚拟机以及相关的服务和网络连接。

完整批处理文件内容如下:


[Copy to clipboard]CODE:
@echo On
@PROMPT [VMWareController]#

@if "%1" == "" goto Help
@if "%1" == "help" goto Help
@if "%1" == "/?" goto Help

@SET oprType=%1
@SET netOpr=%oprType%

@if "%oprType%" == "start" @SET netOpr=enable
@if "%oprType%" == "stop" @SET netOpr=disable

@SET vmxFile=%2
@Rem 如果没有提供第二个参数vmx full path,将尝试使用这里设定的缺省虚拟机
@Rem 根据需要把这个文件修改为实际希望启动的vmx文件
@if "%vmxFile%" == "" @SET vmxFile=D:\VMWare\Red Hat Enterprise Linux 3.vmx

@Rem VMWare的安装目录,根据需要进行修改
@SET vmwareFolder=E:\AppTool\VMWare

@Rem 把VMWare相关的四个服务设置为手动
sc config VMAuthdService start= demand
sc config VMnetDHCP start= demand
sc config "VMware NAT Service" start= demand
sc config vmount2 start= demand

@Rem 启动/停止VMWare相关的四个服务
net %oprType% "VMware Authorization Service"
net %oprType% "VMware DHCP Service"
net %oprType% "VMware NAT Service"
net %oprType% "VMware Virtual Mount Manager Extended"

@Rem 这里使用通配符来停用/启用所有vmnet相关的网络连接
devcon %netOpr% *vmnet*

@Rem 使用vmrun来运行指定的虚拟机
"%vmwareFolder%\vmrun" %oprType% "%vmxFile%"

@goto EndMission

:Help
@echo 自动启动/停止指定的 VMWare 虚拟机以及相关的服务和网络连接
@echo 需要 devcon 工具来控制网络连接。工具下载地址:
@echo http://support.microsoft.com/kb/311272/zh-cn
@echo 命令行参数:
@echo %0 [start^|stop] ^<vmx full path^>
@echo ^<vmx full path^>为缺省启动的虚拟机配置文件
@pause
goto EndMission

:EndMission

把以上代码保存为 .bat 文件,并创建两个指向该 .bat 文件的快捷方式,并分别给两个快捷方式加上 start / stop 参数(也可以再提供第二个参数来指定启动特定的虚拟机配置文件),就可以通过快捷方式直接启动/停止 VMWare 相关的虚拟机和服务。

  其中使用了 devcon 工具来控制网络连接的停用/启用,需要到微软网站下载该工具。

  注意:如果你的系统中存在其他硬件ID包含 *vmnet* 字符串的话会把所有相关的设备同时都禁用/启用。你可以在命令行下输入 devcon find *vmnet* 先检查一下是否只匹配到 VMWare 所添加的两个虚拟网络连接。

  用 vmrun 关闭虚拟机的时候作用等同于在操作界面的 Power Off 按钮。所以最好在执行批处理之前使用虚拟操作系统的 shutdown 命令先安全退出操作系统。

文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 8 | 引用: 0 | 查看次数: 828
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 20 字 | UBB代码 关闭 | [img]标签 关闭