在前面的內容中,無論是創(chuàng)建“完全克隆”的虛擬機,還是“克隆鏈接”的虛擬機,都是在VMware Workstation的圖形界面中以向導的方式創(chuàng)建的,每次創(chuàng)建一個虛擬機都需要多個步驟才能完成。在創(chuàng)建的虛擬機數量有限的情況下,使用圖形界面創(chuàng)建虛擬機還可以接受,如果需要批量創(chuàng)建多臺虛擬機,例如創(chuàng)建幾十臺、上百臺甚至上千臺虛擬機時,反復的操作會讓人“崩潰”。
本文介紹采用VMware提供的命令行工具VMRun.exe并通過編寫批處理腳本的方式,實現虛擬機的批量創(chuàng)建、批量啟動與批量關機。
VMRun.exe是VMware Workstation中提供的一個命令行接口程序,可以實現對VMware Workstation虛擬機或遠程VMware ESXi虛擬機的大多數管理功能,例如虛擬機的電源管理(開機、關機、休眠、重啟、暫停、恢復)、快照管理(創(chuàng)建快照、列出快照、刪除快照、恢復到指定快照點)、客戶機命令管理(執(zhí)行客戶機中程序、添加管理共享文件夾、列表客戶機進程、清除客戶機進程)、注冊虛擬機、刪除虛擬機、克隆虛擬機等功能??梢栽诿钚兄袌?zhí)行該程序。在命令窗口中進入C:Program Files(x86)VMwareVMware Workstation文件夾,執(zhí)行vmrun /?可以查看幫助參數。vmrun的命令格式如下:
vmrun 認證標志 命令參數
其中“認證標志(AUTHENTICATION-FLAGS)”包括以下選項。
VMRun的命令包括POWER(電 源)、SNAPSHOT(快 照)、GUEST OS(客戶機操作系統(tǒng))、GENERAL(常規(guī))等幾項命令,每個命令又有參數及可選參數。下面介紹主要的VMRun命令。
為了在命令提示窗口中的任何位置執(zhí)行VMRun.exe命令,你可以將VMRun.exe程序所在的路徑添加到系統(tǒng)的PATH路徑中。
1.進入“系統(tǒng)屬性”,在“高級”選項卡中單擊“環(huán)境變量”按鈕(如圖5)。
圖5 環(huán)境變量
圖6 查看path路徑
2.在“環(huán)境變量”中的“系統(tǒng)變量”中找到Path,單擊“編輯”按鈕,在“變量值”后面先輸入一個英文的分 號( :),然 后 將 VMRun.exe程序的路徑(C:Program Files (x86)VMwareVMware Workstation )“粘貼”到此。然后單擊“確定”按鈕完成設置。
說明:當前示例計算機添加后的環(huán)境變量如下:
你可以進入命令提示窗口之后通過執(zhí)行path命令查看這一參數(如圖6)。
(1)POWER COMMANDS(電源命令)
POWER COMMANDS包 括start(啟動虛擬機或Team)、stop(關閉虛擬機或Team)、reset(虛擬機復位命令,可選參數為hard或soft)、suspend(休 眠)、pause(暫停,暫停虛擬機的運行)、unpause(從暫?;謴停?。這些命令的參數為“Path to vmx file”,即包括詳細路徑的虛擬機配置文件。
例如,在一臺Windows主機中(當前安裝了VMware Workstation),啟動一個虛擬機的命令如下。
vmrun -T ws start"c:my VMsmyVM.vmx"
在安裝了VMware Workstation的Windows主機中,啟動遠程ESXi主機中一個虛擬機的命令如下。
vmrun -T esx -h https://esxi主機的IP地址或域名/sdk -u hostUser-p hostPassword stop"[storage1] vm/myVM.vmx"
如果要停止、重啟、休眠虛擬機,只要將這start換成stop、reset、suspend即可。
如果要在Mac計算機上安裝了VMware Fusion,想啟動其中的虛擬機,則需要如下的命令。
圖7 命令執(zhí)行結果
(2)SNAPSHOT COMMANDS(快照命令)
使用snapshot命令,可以管理指定虛擬機的快照,包 括 listSnapshots(列出指定虛擬機的快照,可選參數showTree,以樹型方 式 顯 示)、snapshot(為指定虛擬機創(chuàng)建快照)、deleteSnapshot(刪除快照)、revertToSnapshot(恢復到指定快照)。
例如,在一臺安裝了VMware Workstation的Windows主機中,有一臺Windows Server 2008 R2的虛擬機,這個虛擬機有多個快照。
如果要顯示該虛擬機的所有快照,可以執(zhí)行如下命令:
如果要以樹型方式顯示快照,則在vmx文件后面添加showtree參數。
vmrun -tws listsnapshots "F:VM_TempWS08R2-SP1數據中心 版WS08R2-SP1.vmx"showtree
該命令執(zhí)行的結果如圖7所示。
(3)GUEST OS COMMANDS(客戶機系統(tǒng)命令)
使用GUESTOS COMMANDS命令參數,可以檢查指定虛擬機中文件(fileExistsInGuest)或目錄(directoryExistsIn Guest)是否存在、設置共享文件夾(setSharedFolder State)、刪除共享文件夾(removeSharedFolder)、啟動虛擬機中指定的程序(runProgramInGuest)、列 出虛擬機中執(zhí)行程序進程、在虛擬機與主機之間拷貝文件等。
runProgramInGuest——在客戶機中執(zhí)行程序,必須參數為包括詳細路徑的vmx文件,可選參數為-noWait、-activeWindow、-interactive。
例如,當前有一臺Windows XP的虛擬機正在運行(這個虛擬機的配置文件為 c:VMSXPXP.vmx)。
圖8 列出所有進程
當前虛擬機的登錄賬戶為Linna,密碼為1234。
如果要在主機啟動這個虛擬機中的“計算器”程序,則可以執(zhí)行如下命令:
vmrun -T ws -gu linna-gp 1234 runProgramInGuest"C:VMSXpXP.vmx" "C:windowssystem32calc.exe"
當虛擬機中的“計算器”程序退出時,命令提示符中命令行才會返回到C:提示符。如果不想讓執(zhí)行的程序“退出”后才返回到命令行,則可以添加-noWait。
如果要檢查虛擬機C: emp中是否存在test.txt文件,則執(zhí)行:
如果要想檢查C: emp文件夾是否存在,則執(zhí)行:
如果要執(zhí)行腳本(腳本程序為C:perlperl.exe,腳本文件在根目錄script.pl),格式如下 :
如果要禁用共享文件夾(以C:VMSXpXP.vmx為例,下同),則執(zhí)行:
如果要為指定虛擬機啟用共享文件夾,則執(zhí)行:
將主機D盤根目錄為指定虛擬機設置為共享文件夾,設置共享名為DDDD,命令如下:
如果要列出虛擬機中所有進程,則執(zhí)行如下命令:
如圖8所示。
如果要殺除某個進程(如圖8中的“記事本”進程,該進程ID為636),則執(zhí)行:
可以在主機與虛擬機之間拷貝文件,從主機到虛擬機拷貝文件命令為CopyFileFromHostToGuest,從虛擬機到主機拷貝文件命令為CopyFileFromGuestToHost。例如,如果要將主機g: emp中的vncviewer-6.0.2.exe文件復制到虛擬機的C盤temp文件夾,命名為vnc2.exe,命令如下:
如果要復制的程序是帶中文或空格,則需要用英文雙引號包括,例如:
如果要從虛擬機復制到主機,則命令如下(從虛擬機C盤temp復制RAR3.51官方版.exe到G盤temp中命名為rar.exe。
如果要列出所有正在運行的虛擬機,則執(zhí)行:
如果要為指定的虛擬機安裝VMware Tools,則執(zhí)行:
如果要克隆虛擬機,則可以先關閉虛擬機,為虛擬機創(chuàng)建快照,之后再克隆虛擬機。
執(zhí)行上述命令之后,將為C:vmsxpxp.vmx虛擬機關機、創(chuàng)建一個名為fix1的快照,并從此快照創(chuàng)建出一個名為XP01、保存在C:vmsxp01下的虛擬機??寺〉姆绞綖椤版溄涌寺 ?,如果要創(chuàng)建完全克隆的虛擬機,則參數改為full,命令如下:
如果要刪除快照,例如刪除c:vmsxpxp.vmx中的快照fix1,則執(zhí)行:
下面是一個編寫好的批處理程序,可以實現批量創(chuàng)建虛擬機、批量啟動虛擬機,并向虛擬機中添加配置文件、實現添加啟用VNC連接并為不同虛擬機設置不同VNC連接端口的功能。
在本示例中,源虛擬機保存配置文件為“F:VMS-2016Windows 7Windows 7.vmx”,該虛擬機安裝好操作系統(tǒng)、應用程序之后關閉虛擬機。該腳本實現的功能主要如下。
1.之后腳本會創(chuàng)建一個名為VM11的快照。
2.克隆創(chuàng)建10個虛擬機(參數從1001到1010,如果你要修改虛擬機的數量,只需要修改文中的1010即可,例如要創(chuàng)建100個虛擬機則改為1100)。新克隆的虛擬機保存在F:VMS-2017文件夾中。每個虛擬機分別保存在1001開始的子文件夾中,虛擬機名稱以1001開始。
3.向每個虛擬機添加啟用VNC命令、添加虛擬機己復制命令、并指定VNC連接端口為虛擬機的順序號,例如1001的虛擬機的VNC連接端口為1001。
4.創(chuàng)建虛擬機完成后,可以間隔30秒啟動虛擬機。如果你要修改啟動間隔,修改ping -n 30 127.0.0.1中的30即可。
5.之后可以間隔10秒停止虛擬機。
注意:如果創(chuàng)建“克隆鏈接”的虛擬機,父虛擬機所在位置最好是在SSD磁盤,這樣可以提高虛擬機的性能。如果要創(chuàng)建“完全克隆”的虛擬機,則將以下腳本中l(wèi)inked改為full。在實際的環(huán)境中,需要用你的虛擬機路徑、克隆目標代替腳本中的路徑。
編寫的腳本內容如下所示。
REM 本批處理完成為虛擬機創(chuàng)建快照、從快照創(chuàng)建克隆鏈接的虛擬機、為虛擬機配置參數、啟動虛擬機、停止虛擬機的功能
REM 王春海,2017年2月20日
PAUSE 關閉所有正在運行的虛擬機完成,按任意鍵退出。