批處理控制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 命令先安全退出操作系統。