Hyper-V PowerShell 必備指令:內容與使用方法
管理 Hyper-V 環境可能是一項艱鉅的任務。因此,您需要一款強大的管理工具,以便透過中央控制台來設定和控制您的虛擬基礎架構。除了圖形使用者介面之外,Hyper-V 還提供基於 PowerShell 的命令列介面,用於管理 Hyper-V。
在本篇部落格文章中,我們將說明 PowerShell 的運作原理、哪些 Hyper-V PowerShell 指令能提升虛擬機器 (VM) 的效能,以及這項命令列工具如何大幅簡化 Hyper-V 的管理流程。
什麼是 PowerShell?
PowerShell 是由微軟開發的一套任務自動化與配置管理框架,包含一個命令列殼層及相關的腳本語言,其架構建基於 .NET Framework 與 .NET Core 之上。
PowerShell 命令(亦稱為 cmdlet)可透過在單一 PowerShell 腳本中組合多個 cmdlet,來實現各項任務的自動化。微軟已開發出超過一百個核心 PowerShell 命令,可用於執行複雜或基本的任務。
PowerShell 能做什麼?
PowerShell 可協助 Hyper-V 管理員快速自動化管理作業系統(Linux、macOS 和 Windows)及相關程序的任務。與 GUI 工具不同,PowerShell 讓您僅透過命令列即可管理整個系統。
此外,您可將所需的 Hyper-V PowerShell 指令儲存至文字檔案中(透過 .ps1 (擴充功能),然後執行此腳本以執行特定任務。此外,您還可以透過"工作排程程式"將 PowerShell 腳本排程在指定時間執行。
如何開啟 PowerShell
在 Hyper-V 中執行 PowerShell 有幾種方法。最簡單的方式是直接連線至 Hyper-V 伺服器,並從該處啟動 PowerShell。若要遠端連線至 Hyper-V 主機,我們必須確保已啟用"遠端桌面"。啟用"遠端桌面"後,我們即可使用"遠端桌面"工具,如同操作任何 Windows Server 圖形使用者介面 (GUI) 一般,遠端連線至該伺服器。
從圖形使用者介面開啟 PowerShell
要在基於圖形介面的作業系統中開啟 PowerShell,請依照以下步驟操作:
- 您需要點擊
Start並輸入PowerShell在搜尋欄中。 - 右鍵點擊 PowerShell 圖示,然後選擇
Run as Administrator以管理員權限開啟 PowerShell。
從命令列開啟 PowerShell
若您正在執行 Windows Server Core 或 Hyper-V Server,請依照以下步驟執行 PowerShell:
- 類型
PowerShell在命令提示字元中輸入並按下Enter. - Windows PowerShell 工作階段應會自動在"命令提示字元"視窗中啟動。此時,命令提示字元前會加上"PS"前綴,以表示您已啟動 Windows PowerShell 工作階段。
- 進入 PowerShell 後,您即可使用 Hyper-V 專用的 PowerShell 指令,我們將在本文後續內容中進行說明。
遠端設定
若要在 Windows Server Core 或 Hyper-V Server 中檢查遠端桌面設定,您可以啟動 sconfig 如果該工具尚未啟動,請啟動它,並使用選項 7 進行設定。此外,一旦遠端連線至 Hyper-V 主機,您即可使用選項 15 至 Exit to Command Line.
到了那裡,你便置身於一個普通的 cmd.exe 環境——而非 PowerShell。若要啟動 PowerShell 環境,只需輸入 powershell 在命令列中。
遠端 PowerShell
透過 PowerShell,您也可以遠端與 Hyper-V 進行互動。換句話說,您無需建立遠端桌面連線,即可在 Hyper-V 主機上遠端執行 PowerShell 指令。
在已安裝 Hyper-V 管理工具的管理工作站上,我們可以執行 Hyper-V 指令集。首先,我們需要安裝 Hyper-V 工具,其中包含這些指令集 (cmdlets)。
Install-WindowsFeature RSAT-Hyper-V-Tools
載入工具後,我們就可以使用 -computername 參數指向我們的 Hyper-V 主機,如下方截圖所示。我們將主機名稱傳遞給 get-vm PowerShell 指令。
12 個必備的 Hyper-V PowerShell 指令
有許多有效的 Hyper-V PowerShell 指令,能讓 Hyper-V 的管理流程變得輕鬆簡單。讓我們來看看如何使用各種 Hyper-V PowerShell 指令。
Get-Command
我們先從一個 Hyper-V PowerShell 指令開始,這對剛接觸 PowerShell 且不確定該使用哪些 cmdlet 以及如何使用的新手用戶來說非常有幫助。透過執行 Get-Command cmdlet,您可以查看電腦上已安裝的所有可用 cmdlet(Windows PowerShell 指令)、函式及別名的完整清單。
不過,如果您希望縮小搜尋範圍,並取得符合特定條件的 Hyper-V PowerShell 指令清單,您可以使用 Get-Command *-VM 用於查找可控制和設定虛擬機器的命令清單的 cmdlet。
透過變更 VM 參數至 VHD,您可以取得用於管理虛擬硬碟的所有 cmdlet 清單。因此,您可以嘗試各種搜尋參數,以取得所需的結果。
取得說明
一旦決定要使用哪個 Hyper-V PowerShell 指令,您就可以進一步了解該 cmdlet。為此,您可以使用 Get-Help cmdlet。例如,若要進一步了解 Get-VM cmdlet,請輸入以下內容:
Get-Help Get-VM
Get-VM
PowerShell 的 Get-VM 指令可讓您查看一個或多個 Hyper-V 主機上所有可用的虛擬機器。若要查看本地 Hyper-V 主機上的所有虛擬機器,您應執行 Get-VM PowerShell 指令。
在 PowerShell 畫面中,您可以查看可用虛擬機器的清單,其中包含名稱、狀態、CPU 使用率、已分配記憶體、運行時間、狀態及版本。
啟動虛擬機器
這個特定的 啟動虛擬機器 PowerShell 指令碼可協助您啟動虛擬機器。為此,請執行以下 Hyper-V PowerShell 指令:
Start-VM -Name 'Windows Server 2016'
因此,名為 Windows Server 2016 已在您的本地 Hyper-V 主機上啟動。讓我們執行以下指令,確認虛擬機器是否確實已啟動: Get-VM cmdlet。
此外,您也可以使用該的修改版本 Start-VM PowerShell 指令碼,僅在虛擬機器名稱以…開頭時才啟動 Hyper-V:
Start-VM -Name Hyper-V*
如您所見,名為 Hyper-V Server 桌面 已成功啟動。然而,另一台虛擬機器(Hyper-V Server 2012) 已經處於執行狀態,且 PowerShell 已通知您此事。
停止虛擬機器
"Stop-VM"命令列工具可讓您關閉或關機虛擬機器。為此,您可以執行以下命令列工具:
Stop-VM -Name 'Windows Server 2016'
如您所見,已透過客體作業系統成功關閉所選的虛擬機器。
另一個範例是,您可以關閉名稱以 Hyper-V:
Stop-VM -Name Hyper-V* -TurnOff
若發現您的虛擬機器沒有回應,您可以強制關機。要執行此操作,請執行以下 PowerShell 指令:
Stop-VM -Name 'Windows Server 2016' -Force
請注意,強制關機類似於拔除實體機器的電源,這意味著可能會導致未儲存的應用程式資料遺失。在此情況下,建議您先儲存虛擬機器,以避免潛在的資料遺失。為此,您需要執行 Save-VM 此 cmdlet 的作用等同於讓實體電腦進入休眠狀態:
Save-VM -Name 'Windows Server 2016'
若您想儲存名稱以 Hyper-V,請執行以下 Hyper-V PowerShell 指令:
Get-VM -Name Hyper-V* | Save-VM
Checkpoint-VM
該 Checkpoint-VM 此 cmdlet 可協助您建立一個 Hyper-V 虛擬機器檢查點 (亦稱為 Hyper-V 快照)。執行以下 cmdlet 以建立一個名為 更新1 該特定虛擬機的(Windows Server 2016):
Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName Update1
若要確認虛擬機器已成功建立,請使用以下 Hyper-V PowerShell 指令:
Get-VMSnapshot -VMName 'Windows Server 2016'
另一方面,如果您想刪除某些 Hyper-V 快照,可以使用 Remove-VMSnapshot cmdlet。例如,如果我們想刪除所有名稱以 測試, 我們應執行以下 cmdlet:
Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name Testing*
上方的螢幕截圖展示了刪除所選 Hyper-V 快照的完整流程。
Test-VHD
此 Hyper-V PowerShell 指令旨在驗證虛擬硬碟檔案是否確實存在,且可供 Hyper-V 部署使用。此 cmdlet 如下所示:
Test-VHD -Path C:Testing.vhd
如果 VHD 路徑有效,您會在螢幕上看到以下輸出:
若要進一步了解如何使用 PowerShell 指令來管理虛擬硬碟,我們建議您閱讀我們關於 Hyper-V VHD 與 VHDX 檔案操作基礎.
Measure-VM
此 Hyper-V PowerShell 指令可讓您收集特定虛擬機器的資源使用率資料。例如,執行以下 cmdlet 即可查看 CPU 使用率、記憶體使用率、磁碟容量以及網路流量資料, Windows Server 2016:
Measure-VM -VMName 'Windows Server 2016'
請注意,該 Measure-VM 只有在虛擬機器上啟用資源計量後,cmdlet 才能回報所需資料。若要啟用資源計量,請使用以下 Hyper-V PowerShell 指令:
Enable-VMResourceMetering -VMName 'Windows Server 2016'
Get-VMNetworkAdapter
另一個實用的 PowerShell 指令是 Get-VMNetworkAdapter,此功能可讓您識別所選虛擬機器的虛擬網路介面卡。例如,若要找出所有虛擬機器以及管理作業系統的虛擬網路介面卡,您應執行以下 Hyper-V PowerShell 指令:
Get-VMNetworkAdapter –All
如果一切正常,您應會在 PowerShell 主控台中看到以下資訊:
透過 Hyper-V PowerShell 指令,您可以對 Hyper-V 網路介面卡執行各種簡單或複雜的任務。請參閱我們的指南,了解哪些 cmdlet 能提供協助 管理與設定虛擬網路介面卡 在您的 Hyper-V 環境中。
更新虛擬機器版本
PowerShell 提供了一個 cmdlet,可讓您更新所選虛擬機器的版本:
Update-VMVersion -Name 'TestVM'
執行 Hyper-V PowerShell 指令後,名為 TestVM 可更新至當前的 VM 版本。
Get-Process
此 Hyper-V PowerShell 指令可協助您查看本地電腦上所有當前的程序。執行該指令後, Get-Process 透過此 cmdlet,您可以在螢幕上看到以下資訊:
此表格包含以下資訊:
- 該程序已開啟的句柄數量
- 該程序所使用的非分頁記憶體量
- 該程序所使用的可分頁記憶體量
- 該程序的工作集大小
- 該程序所使用的虛擬記憶體量
- 分配給所有處理器的處理器時間總量
- 程序識別碼
- 程序名稱
若要縮小搜尋範圍並找出特定程序,您應輸入程序名稱或 ID。例如,若要了解 Microsoft Word 目前如何運作,您應瀏覽所有執行中程序的清單,並找出包含 Microsoft Word(即 WinWord)相關資訊(包括其程序 ID)的那一行。利用該程序 ID,您可以執行以下 cmdlet 來取得所需資料:
Get-Process -ID 8892
此外,關於當前 WinWord 程序的資料也可以以另一種格式呈現,也就是以屬性清單的形式顯示。執行此 cmdlet 可取得更詳細的輸出結果:
Get-Process WINWORD | Format-List *
取得程序資料後,您可以執行以下 cmdlet:
Stop-Process可讓您停止一個或多個正在執行的程序。Wait-Process允許您在等待一個或多個正在執行的程序停止後,才啟用任何其他輸入。Start-Process可讓您在本地電腦上啟動一個或多個程序。Debug-Process讓您能夠將除錯器附加至本機電腦上的一個或多個正在執行的程序。
例如,如果您想啟動 記事本 若要從 PowerShell 執行此應用程式,您應執行以下 cmdlet:
Start-Process -FilePath "notepad.exe"
另一個例子是,當您以"一般"模式開啟 PowerShell,但需要以提升權限模式執行 PowerShell 才能取得管理員權限時。在這種情況下,請執行以下 Hyper-V PowerShell 指令:
Start-Process -FilePath "powershell" -Verb RunAs
另一方面,如果其中一個正在執行的程序停止回應,您可以執行 Stop-Process 用於停止失敗的應用程式的 cmdlet:
Stop-Process -Name "notepad"
在此情況下,本地電腦上的所有"記事本"應用程式執行個體都會被停止。
每個"記事本"執行個體都有其專屬的程序識別碼。若要停止特定的"記事本"執行個體,應在 Stop-Process cmdlet 中使用 ID 參數。為此,您首先需要執行 Get-Process 使用 cmdlet 找出所需的執行中程序,並識別出您要停止的程序 ID。
例如,您可以透過識別其程序 ID,並執行以下 Hyper-V PowerShell 指令,來停止特定的"記事本"程序:
Stop-Process -ID 5052
因此,只有選定的"記事本"程序才會被停止。
透過這些 PowerShell 指令,您可以偵測到正在消耗不必要資源並降低 Hyper-V 效能的程序,以便終止該程序。
Where-Object
此 Hyper-V PowerShell 指令可讓您篩選管線物件,並找出您確切需要的資料。在此情況下,您需要建立一個 PowerShell 腳本,並在其中指定哪些物件可以透過管線傳遞。透過各種搜尋條件,您可以找出本機電腦上的任何物件。
例如,如果您想找出已停止執行的程序,請使用此 cmdlet:
Get-Service | Where-Object {$_.Status -eq 'Stopped'}
另一個使用 Where-Object 當您想尋找特定的 cmdlet 時,可以使用 cmdlet。以下 Hyper-V PowerShell 指令可協助您找出所有以 請稍候:
Get-Command | Where-Object {$_.Name -like '*wait*'}
接下來 Where-Object 此 cmdlet 可協助您僅根據名稱來查找特定程序。執行以下命令,即可取得所有名稱以 sys:
Get-Process | Where-Object {$_.ProcessName -Match "^sys.*"}
如何使用 PowerShell 建立 Hyper-V 虛擬機器
Hyper-V 的另一項強大內建特點,就是允許使用 PowerShell 進行管理操作。在 Hyper-V 中,我們可以透過 PowerShell 執行許多操作,其中之一便是建立虛擬機器。讓我們來看看一組用於建立新虛擬機器的 Hyper-V PowerShell 指令。
用於建立新虛擬機器的 PowerShell 指令
要建立一台配備全新 60 GB VHDX 硬碟的第二代虛擬機器,並將其連接到特定的 虛擬交換器 (在此情況下,"外部開關”),請在您的 Hyper-V 主機上執行以下 PowerShell 指令。
-
建立虛擬機器:
new-vm -Name "WSTEST" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "D:hyper-vvirtualhard disksWSTEST.vhdx" -NewVHDSizeBytes 60000000000 -Switchname "ExternalSwitch" -
若要新增 DVD 光碟機並載入 ISO 映像檔以供開機使用,我們可以執行以下指令:
Add-vmscsicontroller -vmname WSTESTAdd-vmdvddrive -vmnname WSTEST -controllernumber 1 -controllerlocation 0 -path D:ISOmy.iso -
若要建立固定大小的磁碟並將其掛載至虛擬機器,可執行以下指令來建立固定大小的 VHDX 檔案,並將其掛載至虛擬機器:
new-vhd -path "d:hyper-vvirtual hard disks.wstest.vhdx" -sizebytes 60GB -fixedadd-vmharddiskdrive -vmname WSTEST -path "d:hyper-vvirtual hard diskswstest.vhdx"
結論
PowerShell 起初可能令人望而生畏,但一旦掌握其操作方法,您便能迅速學會如何使用 Hyper-V PowerShell 指令,並簡化 Hyper-V 環境的管理流程。請務必記住,無論您使用何種工具來管理虛擬機器,都必須建立備份,以避免資料遺失和系統停機。
NAKIVO Backup & Replication 這是一款可靠且強大的資料保護解決方案,可協助您保護 VMware、Hyper-V、Nutanix、AWS EC2、Linux、Windows 以及 Microsoft 365 環境。


























