當多數的應用系統都轉移至虛擬化架構時,組織對於IT的營運必須懂得徹底善用虛擬化技術所帶來資源分配效益。為此,系統管理者須開始學習PowerShell Cmdlet的使用,讓許多例行性與常用的管理任務能夠藉由命令與Script搭配執行,達到高效率的批次操作與自動化運行。
圖9所示便是一個典型透過Import-VM命令來匯入一個虛擬機器的範例,值得注意的是,早期虛擬機器配置檔的副檔名為.xml,新版本所採用的副檔名則是.vmcx:
|
▲圖9 還原虛擬機器備份。 |
Import-VM -Path 'C:\Backup\VM02\Virtual
Machines\FA26F5EA-813F-4E84-8BF2-D167D3F0081B.
vmcx' -Copy -VhdDestinationPath 'C:\VM_
Temp\VM02\Virtual Hard Disks' -VirtualMachinePath
'C:\VM_Temp\VM02\Virtual Machines' –GenerateNewId
至於-Copy參數是用以設定匯入後,虛擬硬碟與虛擬機器配置檔案的自訂存放路徑,而不是採用預設的原路徑。-GenerateNewId參數則是用來產生新的虛擬機器ID,使用此參數的優點在於,可以讓相同的來源匯入至相同的Hyper-V主機內來一起運行而不會發生衝突。
關於虛擬機器的匯入設定,實務上必須根據當時的情境需求來決定所要使用到的參數,因此上述範例中所使用的參數都只是作為參考。此外,如果打算匯入虛擬機器至遠端的Hyper-V主機,必須搭配-ComputerName參數設定。若希望連同已匯出的檢查點檔案一併匯入,則可搭配-SnapshotFilePath設定來完成。
升級Hyper-V虛擬機器配置版本
Hyper-V虛擬機器隨著新版本不斷的推出,有些特殊功能的運行便有了最低版本的限制,並且在不同作業系統版本中,也有相對所支援的虛擬機器版本限制,這從Windows Server到Windows Client都是一樣的。
從表1可以查看到若使用Windows Server 2016的Hyper-V主機,則最低版本的虛擬機器配置版本必須是5.0以上,也就是Windows Server 2012 R2時期的版本。
表1 各個Hyper-V虛擬機器配置版本支援
在虛擬機器功能面與版本限制的對照部分,則可參考表2的說明。舉例來說,如果想要建立Hyper-V巢狀虛擬化的架構進行測試,則最小虛擬機器配置版本必須是8.0,也就是在Windows Server 2016或Windows 10上所建立的虛擬機器。
表2 Hyper-V虛擬機器配置版本功能對應表
想要查看現行虛擬機器所採用的是哪個版本的配置,可以從如圖10所示的「Hyper-V管理員」介面或是執行PowerShell命令來查詢。以前者的操作方法來說,預設便可檢視到「設定版本」欄位資訊,而當選取了非最新版本的虛擬機器時,將會發現在該虛擬機器的「動作」選單中多出一個「升級設定版本」選項,點選之後會出現是否要升級的提示訊息。
|
▲圖10 Hyper-V管理員介面。 |
接著,嘗試以PowerShell命令來進行虛擬機器配置版本的升級。如圖11所示,故意一次針對選定Hyper-V主機上的所有虛擬機器,以Update-VMVersion命令來進行升級:
|
▲圖11 以及PowerShell升級虛擬機器配置版本。 |
Update-VMVersion -Name VM01,VM02,VM03,
VM04,VM05,VM06 -ComputerName "HV02" -Force
執行結果中分別出現了警告訊息與錯誤訊息,警告訊息主要是提示目前選定的虛擬機器已是最新版本,而錯誤訊息則是說明運行中的虛擬機器不能夠進行此項升級操作。
此外,如果所要升級的目標低於最小支援的版本,同樣也會出現錯誤訊息而導致失敗,例如無法直接升級來自Windows Server 2012的虛擬機器配置版本,因為它所使用的是4.0版本。
完成上述以Update-VMVersion命令來升級虛擬機器配置版本的操作後,可以再如圖12所示執行「Get-VM | Select Name,State,Version」命令參數,查看升級後的版本資訊。從此範例中可以發現,原有的VM06是5.0版本,而目前已是最新的8.0版本。
|
▲圖12 查詢虛擬機器配置版本。 |
針對Hyper-V預設建立虛擬機器所採用的配置版本,可透過「Get-VMHostSupportedVersion - Default」命令查詢,若是忽略掉-Default參數,則能夠得知目前支援的配置版本編號與相對的作業系統。
至於是否可以在建立虛擬機器時指定所要採用的配置版本呢?答案是可以,不過無法經由圖形介面的操作來完成,而是必須在使用New-VM命令時搭配-Version參數來設定。執行時,若系統偵測到不支援所指定的版本,將會出現錯誤訊息。
如何批次徹底刪除虛擬機器
若從「Hyper-V管理員」介面來完成大量虛擬機器的刪除操作,可以使用〔Ctrl〕按鍵搭配滑鼠左鍵連續選取後,再點選「動作」窗格中的「刪除」即可。不過,像這樣的操作方式,還得自己手動去刪除相關的虛擬硬碟檔案,一旦這些檔案分散在不同的磁碟與資料夾路徑中,那肯定得花上許多時間才能徹底清除完畢,重點是可能還會因此誤刪掉其他不相干的虛擬硬碟檔案。
若改由PowerShell命令方式來執行相同任務,甚至於把這些命令參數撰寫成一個Script,將能夠更有效率地一次徹底刪除選定的所有虛擬機器,而且保證絕對不會誤刪。接下來,就來講解一下這個既簡單又實用的Script寫法。在此以如圖13所示的範例來分段說明。首先可以執行以下命令參數來選定目標的虛擬機器,然後將這些虛擬機器強制執行關機命令:
|
▲圖13 批次刪除選定的虛擬機器。 |
$VM=Get-VM -Name VM01,VM02,VM04,VM07
Stop-VM -VM $VM -TurnOff:$True -Force