成长空间

MiLife

常用链接

统计

积分与排名

Automation Testing Development

最新评论

批处理控制VMWare虚拟机


http://myblog.iweb.net.cn/read.php?66
VMWare 确实是好东西,不过安装之后会增加四个自动启动的服务以及两个虚拟的网络连接。我是比较讨厌这种没事就占着系统资源的东西,何况也不是经常要用着 VMWare ,所以写了个批处理脚本来自动启动/关闭 VMWare 虚拟机以及相关的服务和网络连接。
完整批处理文件内容如下:


1 @echo On  
2 @PROMPT [VMWareController]#  
3  
4 @if "%1" == "" goto Help  
5 @if "%1" == "help" goto Help  
6 @if "%1" == "/?" goto Help  
7  
8 @SET oprType=%1  
9 @SET netOpr=%oprType%  
10  
11 @if "%oprType%" == "start" @SET netOpr=enable  
12 @if "%oprType%" == "stop" @SET netOpr=disable  
13  
14 @SET vmxFile=%2  
15 @Rem 如果没有提供第二个参数vmx full path,将尝试使用这里设定的缺省虚拟机  
16 @Rem 根据需要把这个文件修改为实际希望启动的vmx文件  
17 @if "%vmxFile%" == "" @SET vmxFile=D:\VMWare\Red Hat Enterprise Linux 3.vmx  
18  
19 @Rem VMWare的安装目录,根据需要进行修改  
20 @SET vmwareFolder=E:\AppTool\VMWare  
21  
22 @Rem 把VMWare相关的四个服务设置为手动  
23 sc config VMAuthdService start= demand  
24 sc config VMnetDHCP start= demand  
25 sc config "VMware NAT Service" start= demand  
26 sc config vmount2 start= demand  
27  
28 @Rem 启动/停止VMWare相关的四个服务  
29 net %oprType% "VMware Authorization Service"  
30 net %oprType% "VMware DHCP Service"  
31 net %oprType% "VMware NAT Service"  
32 net %oprType% "VMware Virtual Mount Manager Extended"  
33  
34 @Rem 这里使用通配符来停用/启用所有vmnet相关的网络连接  
35 devcon %netOpr% *vmnet*  
36  
37 @Rem 使用vmrun来运行指定的虚拟机  
38 "%vmwareFolder%\vmrun" %oprType% "%vmxFile%"    
39  
40 @goto EndMission  
41  
42 :Help  
43 @echo 自动启动/停止指定的 VMWare 虚拟机以及相关的服务和网络连接  
44 @echo 需要 devcon 工具来控制网络连接。工具下载地址:  
45 @echo http://support.microsoft.com/kb/311272/zh-cn  
46 @echo 命令行参数:  
47 @echo %0 [start^|stop] ^  
48 @echo ^为缺省启动的虚拟机配置文件  
49 @pause  
50 goto EndMission  
51  
52 :EndMission  
view plain | print | copy to clipboard | ?
@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] ^
@echo ^为缺省启动的虚拟机配置文件
@pause
goto EndMission

:EndMission


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

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

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

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

posted on 2007-08-01 06:59 Picasso 阅读(1407) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: