活用PowerShell命令 高效管理Hyper-V

當多數的應用系統都轉移至虛擬化架構時,組織對於IT的營運必須懂得徹底善用虛擬化技術所帶來資源分配效益。為此,系統管理者須開始學習PowerShell Cmdlet的使用,讓許多例行性與常用的管理任務能夠藉由命令與Script搭配執行,達到高效率的批次操作與自動化運行。

接著,必須準備好給新虛擬機器使用的新虛擬硬碟。如圖4所示,執行以下命令參數來完成建立:

New-VHD -Path C:\VMs\vhd\VM07_01.vhdx 
-Fixed -SizeBytes 10GB


▲圖4 建立新虛擬硬碟。

其中,容量的大小必須根據實際的使用需求來決定,以10GB而言,已足以安裝Windows 10或Linux的客體作業系統,但若是用來安裝完整桌面體驗的Windows Server 2016則是不夠,因為它的最小系統需求是32GB。至於-Fixed參數,則用以指定為固定大小的虛擬硬碟,其優點在於可以獲得較佳的I/O效能,適合生產環境中上線使用。

一旦準備好虛擬硬碟,透過以下命令來建立新虛擬機器,其中-VHDPath參數便是用以設定連接上一步驟中所建立的虛擬硬碟,而-MemoryStartupBytes則是用來設定啟動的記憶體大小:

New-VM -Name "VM07" -VHDPath C:\VMs\vhdVM07_01.vhdx -MemoryStartupBytes 2048MB
現今虛擬機器的客體作業系統安裝方式,大多是採用掛載ISO映像檔來進行,而非使用傳統的DVD光碟片,因此只要使用如下的命令參數,便可以將準備好的ISO映像檔,掛載至選定的虛擬機器配置之中:
Add-VMDvdDrive -VMName "VM07" -Path C:\VMsiso\ct_windows_server_2016_x64_dvd_9327748
.iso
只要再完成虛擬機器的虛擬交換器連接,便算是完成了一個新虛擬機器的基礎配置。先執行「Get-VM -Name "VM07" | Get-VMNetworkAdapter」命令,查看此虛擬機器目前所連接的虛擬交換器,再透過下列的命令完成連接選定的虛擬交換器:
Get-VM -Name "VM07" | Get-VMNetworkAdapter
| Connect-VMNetworkAdapter -SwitchName
"VM Switch Internal"
成功掛載ISO安裝映像檔與設定虛擬交換器連接後,接著執行「Start-VM -Name "VM07"」命令來啟動此虛擬機器,開始完成客體作業系統的安裝。至於後續則可以透過執行以下命令參數來查看網路的使用狀態:
Get-VM -Name "VM07" | %{Write-Output
$_;Get-VMNetworkAdapter -VM $_ | FT }
通常對於剛完成安裝客體作業系統的虛擬機器,只要在完成一些基礎的配置後,例如主機名稱與網域、網卡TCP/IP、伺服器角色或功能的安裝、防毒軟體等操作,就會進行一次快照備份,以利於後續可以隨時快速復原。

如圖5所示,建議執行以下兩道命令參數,依序完成虛擬機器的關機、卸載ISO映像檔的連接、完成虛擬機器快照:


▲圖5 移除虛擬DVD並建立檢查點。

Stop-VM -Name "VM07" -Force | Get-VMDvdDrive
| Remove-VMDvdDrive
Get-VM "VM07" | Checkpoint-VM -SnapshotName
'S01'
完成快照後的虛擬機器,後續如果發生因為客體作業系統配置不當,而導致必須重新安裝客體作業系統時,只需要執行以下的命令參數範例來立即復原前面所建立的快照備份,便可大幅節省從頭來過的時間:
Get-VM "VM07" | Get-VMSnapshot -Name 'S01'
|  Restore-VMSnapshot -Confirm:$false
有些時候可能會想要在現行的虛擬機器中重新安裝客體作業系統,這時候通常需要將光碟機的開機啟動順序設定成最優先,並且將鍵盤數字鍵區域的鎖定功能關閉。像這樣的需求,除了透過Hyper-V管理員介面操作來進行外,也可以透過以下的PowerShell命令參數來執行:

Set-VMBios VM07 -DisableNumLock-
StartupOrder @("CD", "LegacyNetworkAdapter", 
"IDE","Floppy")
不過,此功能設定僅適用在世代一的虛擬機器配置,若是套用在世代二的虛擬機器則會出現錯誤訊息。

善用虛擬機器群組化管理

當平日需要維運的虛擬機器數量很多,甚至於還分布在多部的Hyper-V主機時,為了讓往後管理更有效率,建議像管理人員帳戶一樣來建立群組的分類,如此一來,凡是要進行相同群組中所有虛擬機器的配置異動,只要將異動的相關命令套用在該群組即可。

接下來,就依序講解虛擬機器群組的建立,以及如何套用異動設定在所建立的群組。在此以一部名為「HV02」的Hyper-V主機為例,但實際上接下來的範例也可以套用在同時多部虛擬主機的管理上。

先執行「Get-VM -ComputerName HV02」命令來查看在HV02主機上有哪些虛擬機器。接著,執行「New-VMGroup -Name VMG01 -GroupType VMCollectionType」命令,建立一個名為「VMG01」的虛擬機器群組,不過目前尚無任何虛擬機器成員。

執行「$VMs=Get-VM -ComputerName HV02 -Name VM01,VM02,VM04,VM07」命令時,便是建立一個「$VMs」變數表示其中所選定的虛擬機器。然後,執行「Add-VMGroupMember -Name VMG01 -VM $VMs」命令,便完成了群組成員的新增設定。

完成許多虛擬機器群組與成員的設定後,往後如果隨時要查詢所有群組的成員名單,只要執行「Get-VMGroup | FT Name,GroupType,VMMembers」命令即可。

如果只是查詢特定的虛擬機器群組,則增加-VM參數設定。然而,如果反過來想要查詢特定的虛擬機器是屬於哪一個群組(例如VM01),則執行「Get-VM VM01 | Select Name,Groups」命令參數。

最後,就可以來學習一下如何對於選定的群組進行各種配置或操作。假設想要針對VMG01群組中的所有虛擬機器,設定虛擬處理器(CPU)的數量、保留的資源以及最大使用的資源比例,可以參考「Set-VMProcessor -VM(Get-VMGroup VMG01).VMMembers -Count 2 -Reserve 10 -Maximum 75」命令參數。

接著,如果要一次啟動VMG01中所有的虛擬機器,只要執行「Start-VM -VM(Get-VMGroup VMG01).VMMembers」命令即可。執行後可以再執行「Get-VM -ComputerName HV02」命令,來查看群組中的虛擬機器是否皆已經啟動。



追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!