新聞中心
如何在Hyper-V里使用PowerShell或VBScript腳本?
作者:無名 2009-06-30 18:05:12
系統(tǒng)
Windows
虛擬化 為了有效地管理虛擬化平臺,你需要強有力的腳本工具。這能允許幾種級別的配置,并且縮短配置時間。

公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出天祝藏族自治免費做網(wǎng)站回饋大家。
為了有效地管理虛擬化平臺,你需要強有力的腳本工具。這能允許幾種級別的配置,并且縮短配置時間。微軟Hyper-Visor的腳本選項包括能在Hyper-V腳本環(huán)境里使用VBScript和增強型PowerShell。在本文中,TechTarget中國特約虛擬化專家Rick Vanover將介紹Hyper-V腳本是如何工作的,并舉出幾個例子。
Hyper-V的腳本環(huán)境通常叫做Windows Management Instrumentation(WMI),我們將注重虛擬化命名空間。使用WMI界面,管理員擁有使用Hyper-V完成大量任務(wù)的腳本。使用PowerShell Management Library讓管理更加輕松。
確定使用何種腳本取決于需要什么及可用什么。我會關(guān)注不能由System Center Virtual Machine Manager(SCVMM)集中管理的Hyper-V服務(wù)器,因為微軟為SCVMM實施提供了額外的腳本選項。檢查TechNet頁查看SCVMM腳本概況。
微軟更擅長書寫腳本
我的職業(yè)就是圍繞著所需的腳本打轉(zhuǎn)。微軟有比你或者我自己獨立創(chuàng)建的更好的腳本。幸好有許多資源可以使用。下面是一個清單,列出了開始使用Hyper-V腳本的在線資源:
Virtual PC Guy的網(wǎng)絡(luò)日志。Ben Armstrong的Microsoft Developer Network (MSDN)博客有來自所有微軟虛擬化系統(tǒng)的簡單腳本資源。
Taylor Brown的博客。這是另一個強有力的資源。Brown包括了幾個使用案例,包括關(guān)于SCVMM的一個案例。
微軟虛擬化團隊博客地址。這個博客包括所有與Hyper-V相關(guān)的東西,也有其他虛擬化資源。
PowerGUI.org的Hyper-V PowerPack。這相當(dāng)于VMware的VI Toolkit,來自PowerGUI的功能是必須要有的,確保查看TechTarget上Eric Seibert寫的關(guān)于這個工具包的技巧。
獲取虛擬機信息的案例
既然我們對腳本選項作了一個概述,現(xiàn)在我們來看看實例。在Hyper-V里使用的PowerShell腳本,幾乎每個資源都以查詢腳本開始,尤其是包括決定性操作的腳本。這只是與Hyper-V的虛擬化命名空間交互影響的一個單行方式,并獲取虛擬機信息就像它存在于命名空間。許多腳本想要查詢這個獲取當(dāng)前的狀態(tài),如OperationalStatus的值,這表明了虛擬機的運行狀態(tài)。下面這個簡單的命令能從名為“TESTVM1”的虛擬機獲取信息:
Get-WmiObject -Namespace root\virtualization -Query "Select * From Msvm_ComputerSystem Where ElementName='TESTVM1'"
如果你想在自己的環(huán)境中運行虛擬機,那它的名字是唯一需要更改的地方。當(dāng)在PowerShell里執(zhí)行時,顯示結(jié)果見下圖1:
點擊放大
注意,虛擬機的OperationalStatus值顯示為“2”,意味著它在運行。
使用VBScript腳本停止或啟動虛擬機
開啟和停止虛擬機這樣的基本任務(wù)是學(xué)習(xí)腳本的好的開始。不同于PowerShell,Hyper-V機器能通過VBScript交互,并且能完全訪問WMI虛擬化命名空間。下面的腳本執(zhí)行的是啟動使用由VBScript關(guān)閉的虛擬機:
Option Explicit
Dim CallWMI
Dim InventoryVMs
Dim YourVM
YourVM = "TESTVM1"
Set CallWMI = GetObject("winmgmts:\\.\root\virtualization")
Set InventoryVMs = CallWMI.ExecQuery("SELECT * FROM Msvm_ComputerSystem
WHERE ElementName='" & YourVM & "'")
InventoryVMs.ItemIndex(0).RequestStateChange(2)
如PowerShell,腳本里唯一需要更改的地方是“YourVM”的在線值,VBScript。保存這個文本為本地文件系統(tǒng)上的.VBS文件,允許其在本地執(zhí)行。
現(xiàn)在我們在遠(yuǎn)程Hyper-V服務(wù)器上執(zhí)行關(guān)閉命令。先前的例子是為了在擁有Hyper-V和特定虛擬機的服務(wù)器上本地運行腳本。有多臺Hyper-V服務(wù)器并且不執(zhí)行SCVMM對環(huán)境有利。這個腳本將在Server55上遠(yuǎn)程關(guān)閉(強制關(guān)閉)TESTVM1虛擬機。
Option Explicit
Dim CallWMI
Dim InventoryVMs
Dim YourVM
YourVM = "TESTVM1"
Set CallWMI = GetObject("winmgmts:\\SERVER55\root\virtualization")
Set InventoryVMs = CallWMI.ExecQuery("SELECT * FROM Msvm_ComputerSystem
WHERE ElementName='" & YourVM & "'")
InventoryVMs.ItemIndex(0).RequestStateChange(3)
注意,第六行輸入了Server55的名字,這是宿主TESTVM1的Hyper-V服務(wù)器。它能從系統(tǒng)遠(yuǎn)程運行,注意WMI命名空間,如另一臺Windows Server 2008服務(wù)器。強制關(guān)閉如上面例子中最后一行的代號3發(fā)送。其他流行的虛擬機代號包括以下這些:
Reboot (10):這個代號在虛擬機上執(zhí)行硬啟動。
Pause (32768):這個代號暫停虛擬機。
測試Hyper-V腳本
Hyper-V腳本應(yīng)該在測試環(huán)境里執(zhí)行。如廣告所說,PowerShell是一個非常有力的shell環(huán)境。寫入在VBScript里的腳本有同樣的風(fēng)險,因為它們做了你告知的事,就如它們也將做你告知的事。但發(fā)送命令時,沒有撤銷按鈕或者退回命令。簡單來說,這個命令假定知道你要做什么。同樣,權(quán)限也是遠(yuǎn)程Hyper-V服務(wù)器需要關(guān)注的問題。更多信息可以參照技巧:Hyper-V的權(quán)限模式。
總結(jié)
要自動化Hyper-V環(huán)境要素,管理員有大量的選擇。有了經(jīng)驗和耐心,你就能讓Hyper-V與你所創(chuàng)建的PowerShell或VBScripts協(xié)調(diào)工作。
【編輯推薦】
- CIO五項注意 不要給虛擬化留下安全漏洞!
- SVM5:存儲虛擬化的新強者
- 大幅節(jié)約成本 桌面虛擬化必將普及
當(dāng)前文章:如何在Hyper-V里使用PowerShell或VBScript腳本?
文章位置:http://www.dlmjj.cn/article/cosdidg.html


咨詢
建站咨詢
