Hyper-V PowerShell 必備指令:內容與使用方法

管理 Hyper-V 環境可能是一項艱鉅的任務。因此,您需要一款強大的管理工具,以便透過中央控制台來設定和控制您的虛擬基礎架構。除了圖形使用者介面之外,Hyper-V 還提供基於 PowerShell 的命令列介面,用於管理 Hyper-V。

在本篇部落格文章中,我們將說明 PowerShell 的運作原理、哪些 Hyper-V PowerShell 指令能提升虛擬機器 (VM) 的效能,以及這項命令列工具如何大幅簡化 Hyper-V 的管理流程。

NAKIVO Hyper-V 備份解決方案

NAKIVO Hyper-V 備份解決方案

適用於 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,請依照以下步驟操作:

  1. 您需要點擊 Start 並輸入 PowerShell 在搜尋欄中。
  2. 右鍵點擊 PowerShell 圖示,然後選擇 Run as Administrator 以管理員權限開啟 PowerShell。

How to run PowerShell in Windows

從命令列開啟 PowerShell

若您正在執行 Windows Server Core 或 Hyper-V Server,請依照以下步驟執行 PowerShell:

  1. 類型 PowerShell 在命令提示字元中輸入並按下 Enter.
  2. Windows PowerShell 工作階段應會自動在"命令提示字元"視窗中啟動。此時,命令提示字元前會加上"PS"前綴,以表示您已啟動 Windows PowerShell 工作階段。
  3. 進入 PowerShell 後,您即可使用 Hyper-V 專用的 PowerShell 指令,我們將在本文後續內容中進行說明。

How to run PowerShell in Windows command prompt

遠端設定

若要在 Windows Server Core 或 Hyper-V Server 中檢查遠端桌面設定,您可以啟動 sconfig 如果該工具尚未啟動,請啟動它,並使用選項 7 進行設定。此外,一旦遠端連線至 Hyper-V 主機,您即可使用選項 15Exit to Command Line.

Enabling Remote desktop to run PowerShell commands on a Hyper-V host

到了那裡,你便置身於一個普通的 cmd.exe 環境——而非 PowerShell。若要啟動 PowerShell 環境,只需輸入 powershell 在命令列中。

Running PowerShell commands

遠端 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 指令。

Running PowerShell Hyper-V commands remotely

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 指令)、函式及別名的完整清單。

The Get-VM PowerShell cmdlet

不過,如果您希望縮小搜尋範圍,並取得符合特定條件的 Hyper-V PowerShell 指令清單,您可以使用 Get-Command *-VM 用於查找可控制和設定虛擬機器的命令清單的 cmdlet。

Using the Get-Command PowerShell cmdlet

透過變更 VM 參數至 VHD,您可以取得用於管理虛擬硬碟的所有 cmdlet 清單。因此,您可以嘗試各種搜尋參數,以取得所需的結果。

Using the Get-Command cmdlet to display commands to work with VHD

取得說明

一旦決定要使用哪個 Hyper-V PowerShell 指令,您就可以進一步了解該 cmdlet。為此,您可以使用 Get-Help cmdlet。例如,若要進一步了解 Get-VM cmdlet,請輸入以下內容:

Get-Help Get-VM

Using the Get-Help and Get-VM Hyper-V PowerShell commands

Get-VM

PowerShell 的 Get-VM 指令可讓您查看一個或多個 Hyper-V 主機上所有可用的虛擬機器。若要查看本地 Hyper-V 主機上的所有虛擬機器,您應執行 Get-VM PowerShell 指令。

PowerShell Get-VM details

在 PowerShell 畫面中,您可以查看可用虛擬機器的清單,其中包含名稱、狀態、CPU 使用率、已分配記憶體、運行時間、狀態及版本。

啟動虛擬機器

這個特定的 啟動虛擬機器 PowerShell 指令碼可協助您啟動虛擬機器。為此,請執行以下 Hyper-V PowerShell 指令:

Start-VM -Name 'Windows Server 2016'

因此,名為 Windows Server 2016 已在您的本地 Hyper-V 主機上啟動。讓我們執行以下指令,確認虛擬機器是否確實已啟動: Get-VM cmdlet。

How to use the start VM PowerShell cmdlet

此外,您也可以使用該的修改版本 Start-VM PowerShell 指令碼,僅在虛擬機器名稱以…開頭時才啟動 Hyper-V:

Start-VM -Name Hyper-V*

PowerShell start VM

如您所見,名為 Hyper-V Server 桌面 已成功啟動。然而,另一台虛擬機器(Hyper-V Server 2012) 已經處於執行狀態,且 PowerShell 已通知您此事。

停止虛擬機器

"Stop-VM"命令列工具可讓您關閉或關機虛擬機器。為此,您可以執行以下命令列工具:

Stop-VM -Name 'Windows Server 2016'

Using Stop-VM and Get-VM PowerShell commands

如您所見,已透過客體作業系統成功關閉所選的虛擬機器。

另一個範例是,您可以關閉名稱以 Hyper-V:

Stop-VM -Name Hyper-V* -TurnOff

Using the Stop-VM and Get-VM PowerShell Hyper-V commands

若發現您的虛擬機器沒有回應,您可以強制關機。要執行此操作,請執行以下 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

Using the Save-VM and Get-VM PowerShell commands for Hyper-V

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'

Using the Hyper-V PowerShell commands to create a VM snapshot (checkpoint)

另一方面,如果您想刪除某些 Hyper-V 快照,可以使用 Remove-VMSnapshot cmdlet。例如,如果我們想刪除所有名稱以 測試, 我們應執行以下 cmdlet:

Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name Testing*

Windows PowerShell commands to delete snapshots for a Hyper-V VM

上方的螢幕截圖展示了刪除所選 Hyper-V 快照的完整流程。

Test-VHD

此 Hyper-V PowerShell 指令旨在驗證虛擬硬碟檔案是否確實存在,且可供 Hyper-V 部署使用。此 cmdlet 如下所示:

Test-VHD -Path C:Testing.vhd

如果 VHD 路徑有效,您會在螢幕上看到以下輸出:

An example of using the Test-VHD command

若要進一步了解如何使用 PowerShell 指令來管理虛擬硬碟,我們建議您閱讀我們關於 Hyper-V VHD 與 VHDX 檔案操作基礎.

Measure-VM

此 Hyper-V PowerShell 指令可讓您收集特定虛擬機器的資源使用率資料。例如,執行以下 cmdlet 即可查看 CPU 使用率、記憶體使用率、磁碟容量以及網路流量資料, Windows Server 2016:

Measure-VM -VMName 'Windows Server 2016'

PowerShell get VM information

請注意,該 Measure-VM 只有在虛擬機器上啟用資源計量後,cmdlet 才能回報所需資料。若要啟用資源計量,請使用以下 Hyper-V PowerShell 指令:

Enable-VMResourceMetering -VMName 'Windows Server 2016'

Get-VMNetworkAdapter

另一個實用的 PowerShell 指令是 Get-VMNetworkAdapter,此功能可讓您識別所選虛擬機器的虛擬網路介面卡。例如,若要找出所有虛擬機器以及管理作業系統的虛擬網路介面卡,您應執行以下 Hyper-V PowerShell 指令:

Get-VMNetworkAdapter –All

如果一切正常,您應會在 PowerShell 主控台中看到以下資訊:

PowerShell get VM information about network adapters

透過 Hyper-V PowerShell 指令,您可以對 Hyper-V 網路介面卡執行各種簡單或複雜的任務。請參閱我們的指南,了解哪些 cmdlet 能提供協助 管理與設定虛擬網路介面卡 在您的 Hyper-V 環境中。

更新虛擬機器版本

PowerShell 提供了一個 cmdlet,可讓您更新所選虛擬機器的版本:

Update-VMVersion -Name 'TestVM'

執行 Hyper-V PowerShell 指令後,名為 TestVM 可更新至當前的 VM 版本。

How to update VM Version in PowerShell

Get-Process

此 Hyper-V PowerShell 指令可協助您查看本地電腦上所有當前的程序。執行該指令後, Get-Process 透過此 cmdlet,您可以在螢幕上看到以下資訊:

Viewing running processes on a Hyper-V host

此表格包含以下資訊:

  • 該程序已開啟的句柄數量
  • 該程序所使用的非分頁記憶體量
  • 該程序所使用的可分頁記憶體量
  • 該程序的工作集大小
  • 該程序所使用的虛擬記憶體量
  • 分配給所有處理器的處理器時間總量
  • 程序識別碼
  • 程序名稱

若要縮小搜尋範圍並找出特定程序,您應輸入程序名稱或 ID。例如,若要了解 Microsoft Word 目前如何運作,您應瀏覽所有執行中程序的清單,並找出包含 Microsoft Word(即 WinWord)相關資訊(包括其程序 ID)的那一行。利用該程序 ID,您可以執行以下 cmdlet 來取得所需資料:

Get-Process -ID 8892

Viewing the ID of the running process on a Hyper-V host

此外,關於當前 WinWord 程序的資料也可以以另一種格式呈現,也就是以屬性清單的形式顯示。執行此 cmdlet 可取得更詳細的輸出結果:

Get-Process WINWORD | Format-List *

Viewing the details about the process on a Hyper-V host in PowerShell

取得程序資料後,您可以執行以下 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

How to run PowerShell commands in the elevated mode

另一方面,如果其中一個正在執行的程序停止回應,您可以執行 Stop-Process 用於停止失敗的應用程式的 cmdlet:

Stop-Process -Name "notepad"

在此情況下,本地電腦上的所有"記事本"應用程式執行個體都會被停止。

每個"記事本"執行個體都有其專屬的程序識別碼。若要停止特定的"記事本"執行個體,應在 Stop-Process cmdlet 中使用 ID 參數。為此,您首先需要執行 Get-Process 使用 cmdlet 找出所需的執行中程序,並識別出您要停止的程序 ID。

Stopping the needed process in PowerShell

例如,您可以透過識別其程序 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*'}

An example of using the Where-Object cmdlet in PowerShell

接下來 Where-Object 此 cmdlet 可協助您僅根據名稱來查找特定程序。執行以下命令,即可取得所有名稱以 sys:

Get-Process | Where-Object {$_.ProcessName -Match "^sys.*"}

How to find the process based only on its name

如何使用 PowerShell 建立 Hyper-V 虛擬機器

Hyper-V 的另一項強大內建特點,就是允許使用 PowerShell 進行管理操作。在 Hyper-V 中,我們可以透過 PowerShell 執行許多操作,其中之一便是建立虛擬機器。讓我們來看看一組用於建立新虛擬機器的 Hyper-V PowerShell 指令。

用於建立新虛擬機器的 PowerShell 指令

要建立一台配備全新 60 GB VHDX 硬碟的第二代虛擬機器,並將其連接到特定的 虛擬交換器 (在此情況下,"外部開關”),請在您的 Hyper-V 主機上執行以下 PowerShell 指令。

  1. 建立虛擬機器:

    new-vm -Name "WSTEST" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "D:hyper-vvirtualhard disksWSTEST.vhdx" -NewVHDSizeBytes 60000000000 -Switchname "ExternalSwitch"

  2. 若要新增 DVD 光碟機並載入 ISO 映像檔以供開機使用,我們可以執行以下指令:

    Add-vmscsicontroller -vmname WSTEST

    Add-vmdvddrive -vmnname WSTEST -controllernumber 1 -controllerlocation 0 -path D:ISOmy.iso

  3. 若要建立固定大小的磁碟並將其掛載至虛擬機器,可執行以下指令來建立固定大小的 VHDX 檔案,並將其掛載至虛擬機器:

    new-vhd -path "d:hyper-vvirtual hard disks.wstest.vhdx" -sizebytes 60GB -fixed

    add-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 環境。

試試看 NAKIVO Backup & Replication

試試看 NAKIVO Backup & Replication

立即申請免費試用,全面體驗本解決方案的所有資料保護特點。15 天免費試用。無功能或容量限制。無需提供信用卡資訊。

People also read