當多數的應用系統都轉移至虛擬化架構時,組織對於IT的營運必須懂得徹底善用虛擬化技術所帶來資源分配效益。為此,系統管理者須開始學習PowerShell Cmdlet的使用,讓許多例行性與常用的管理任務能夠藉由命令與Script搭配執行,達到高效率的批次操作與自動化運行。
成功建立遠端的PowerShell Session後,就能夠開始執行遠端主機上任何使用的PowerShell命令。結束遠端管理操作之後,執行「Exit-PSSession」命令以便回到本機的命令提示字元。
如果目前管理人員所使用的Windows電腦並沒有加入網域,但卻想要以「Enter-PSSession」命令連線網域中的某一部Hyper-V主機,這時若直接嘗試建立連線,即便使用網域管理員的帳戶登入,也會出現「WinRM用戶端無法處理要求」的錯誤訊息而導致失敗。
想要解決獨立電腦無法建立遠端PowerShell Session的問題,必須預先設定好信任的主機才行。在此執行「Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.7.206" -Force」命令參數,將IP為192.168.7.206的Hyper-V主機設定成信任的主機,當然也可輸入主機名稱或FQDN,並且可以一次設定多筆。
最後,再執行「Get-Item WSMan:\localhost\Client\TrustedHosts」命令來確認已經設定成功即可。完成信任主機的設定後,再次以「Enter-PSSession」命令來建立與信任主機的連線時便會成功。
在沒有建立PowerShell Session連線的情境下,若目前已經使用網域管理員的權限登入Windows,並且想要在指定的遠端主機中執行特定的命令或腳本程式,可以參考以下兩個命令參數範例:
Invoke-Command -ComputerName HV01, HV02
-ScriptBlock {Get-UICulture}
Invoke-Command -ComputerName HV01, HV02
-FilePath D:\Scripts\PC-Info.ps1
前者是指定在HV01與HV02主機上執行一個PowerShell中的Get-UICulture命令,以回傳這兩部主機作業系統所使用的操作介面語系;後者則是執行指定路徑下的.ps1腳本程式。
以PowerShell配置Hyper-V主機
當網域內有部署多部的Hyper-V主機時,有一些可能是有加入叢集(Cluster)架構中來運行,某些則可能是獨立運行。
無論如何,每次需要建立新的虛擬機器或轉移現行的虛擬機器之前,肯定都得先查看哪一個叢集或獨立的Hyper-V主機適合運行,主要便是要對這些主機所連接的網路以及所能夠承載的負載來判定,這包括處理器、記憶體以及儲存區的可用資源與性能。
為此,可以善用幾個簡單的PowerShell命令與參數來快速查詢。首先執行「Get-VMHost」命令來查詢目前網域中有哪一些Hyper-V主機,以及它們各個主機所配置的邏輯處理器數量、記憶體大小,以及是否已啟用虛擬機器轉移功能。
若想要查詢選定Hyper-V主機(例如HV02)的詳細資訊,則執行「Get-VMHost HV02 | FL」命令,就能夠進一步查看到包括資源使用的計量間隔時間、可用的虛擬交換器、虛擬機器與虛擬硬碟檔案預設存放路徑、最大儲存區與虛擬機器的轉移數量、FQDN等等資訊。若要查詢的是選定的Hyper-V叢集(例如HVCluster01),則執行「Get-VMHostCluster -ClusterName " HVCluster01"」命令。
接下來,若需要對於選定的Hyper-V主機配置進行調整,可以透過「Set-VMHost」命令搭配相關的參數來進行設定。舉例來說,想要將資源使用的計量間隔時間從預設的1小時修改成2小時,則執行「Set-VMHost -ResourceMeteringSaveInterval 02:00:00」命令。
接著,若想讓此主機的虛擬機器可以接受使用任何網路的轉移操作,就執行「Set-VMHost -NumaSpanningEnabled $false」命令。
針對虛擬機器設定檔與虛擬硬碟檔的存放路徑,在實務上務必記住三大原則,分別是不存放在與作業系統相同的磁碟中、存放在較快速的磁碟中(建議SSD或至少1萬轉速以上的SAS硬碟),以及採用0+1或RAID 5的磁碟陣列。
在規劃好Hyper-V所要使用的磁碟後,對於現有安裝所採用的虛擬機器與虛擬硬碟的路徑可能是預設配置,此時可參考以下四行命令參數,將其存放路徑指向至所準備好的儲存區:
$VMDrive = "C:"
$VMPath = Join-Path -path $VMDrive -ChildPath
"VMs\vm"
$VHDPath = Join-Path -Path $VMDrive -ChildPath
"VMs\vhd"
MD -Path $VMPath,$VHDPath
首先,設定好所要使用的三個變數,包括虛擬機器磁碟、虛擬機器路徑以及虛擬硬碟路徑,然後透過MD命令完成相對資料夾的建立作業。
最後透過Set-VMHost命令引用前面所建立的變數,修改Hyper-V虛擬硬碟與虛擬機器檔案的存放路徑:
Set-VMHost -VirtualHardDiskPath $VHDPath
-VirtualMachinePath $VMPath
如此一來,往後所新增的虛擬機器,無論是透過Hyper-V管理員介面還是PowerShell,若沒有特別指定存放路徑,便會自動採用此路徑設定。
全命令建立新虛擬機器
在完成Hyper-V主機的配置之後,接下來嘗試完全以PowerShell命令來建立虛擬機器,這樣的好處除了能夠完全洞悉在圖形介面操作的背後,系統是如何完成一個新虛擬機器的建立之外,往後也將可以把這些熟悉的命令與參數撰寫成一些平日維護管理時常用的Script,以便讓維護過程中的各項任務操作變得更有效率。
首先,透過以下New-Item的命令參數來分別建立虛擬機器、虛擬硬碟以及安裝映像檔的存放資料夾:
New-Item -ItemType directory -Path ("C:\VMs",
"C:\VMs\vm","C:\VMs\vhd","C:\VMs\iso") -Force
接著,必須處理虛擬網路的連接部分。可透過以下的New-VMSwitch命令參數來建立新虛擬機器所要使用的虛擬交換器,以便讓後續新虛擬機器可以透過所連接的虛擬交換器,來與主機上的其他虛擬機器或網路中的其他主機進行連線:
New-VMSwitch -Name "VM Switch Internal"
-SwitchType Private
以如圖3所示的範例而言,由於所設定的虛擬交換器類型是Private,因此對於連接此虛擬交換器的虛擬機器,便只能夠與相同主機中的其他虛擬機器連線。換句話說,如果想要與實體網路中的其他主機進行連線,必須採用External類型的虛擬交換器。
|
▲圖3 建立內部虛擬交換器。 |
透過執行「Get-VMSwitch」命令將可以得知目前現有可用的虛擬機器換器清單,其中External類型的虛擬交換器,通常在安裝Hyper-V伺服器角色的過程中便已經完成建立,如果是透過PowerShell命令來安裝Hyper-V伺服器角色,則另當別論。