使用 Windows PowerShell 管理 Azure Stack HCI 上的 VM

適用於:Azure Stack HCI 版本 23H2 和 22H2;Windows Server 2022、Windows Server 2019

Windows PowerShell 可以用來建立和管理 Azure Stack HCI 上的虛擬機器 (VM)。

注意

在 Azure Stack HCI 23H2 上建立和管理 VM 的建議方式是使用 Azure Arc 控制平面。 不過,由於本文所述的功能尚未由 Azure Arc 提供,因此您可以使用 Windows Admin Center 或 PowerShell,如下所述。

您通常會從遠端電腦管理 VM,而不是在叢集中的主機伺服器上管理。 這部遠端電腦稱為管理電腦。

注意

從管理電腦執行 PowerShell 命令時,請將 -ComputerName 參數包含在您要管理之主機伺服器的名稱中。 允許 NetBIOS 名稱、IP 位址與完整網域名稱。

如需使用 PowerShell 管理 VM 的完整參考文件,請參閱 Hyper-V 參考

建立 VM

New-VM Cmdlet 可用來建立新的 VM。 如需詳細使用方式,請參閱 New-VM 參考文件。

以下是您在使用現有的虛擬硬碟建立新 VM 時可指定的設定,其中:

  • -Name 是您為要建立的虛擬機器提供的名稱。

  • -MemoryStartupBytes 是虛擬機器在啟動時可用的記憶體數量。

  • -BootDevice 是虛擬機器啟動時的開機裝置。 這通常是虛擬硬碟 (VHD)、用於 DVD 開機的 .iso 檔案,或用於網路開機的網路介面卡 (NetworkAdapter)。

  • -VHDPath 是您要使用的虛擬機器磁碟所在的路徑。

  • -Path 是用來儲存虛擬機器組態檔的路徑。

  • -Generation 是虛擬機器的世代。 VHD 應使用第 1 代,VHDX 則使用第 2 代。

  • -SwitchName 是您想要虛擬機用來連線到其他虛擬機或網路的虛擬交換器名稱。 使用 Get-VMSwitch 可取得虛擬交換器的名稱。 例如:

以下是建立名為 VM1 的 VM 時所使用的完整命令:

New-VM -ComputerName Server1 -Name VM1 -MemoryStartupBytes <Memory> -BootDevice <BootDevice> -VHDPath <VHDPath> -Path <Path> -Generation <Generation> -SwitchName <Switch name>

下一個範例會建立具有 4GB 記憶體的第 2 代虛擬機器。 該機器會從現行目錄中的 VMs\Win10.vhdx 資料夾開機,並使用名為 ExternalSwitch 的虛擬交換器。 虛擬機器組態檔會儲存在 VMData 資料夾中。

New-VM -ComputerName Server1 -Name VM1 -MemoryStartupBytes 4GB -BootDevice VHD -VHDPath .\VMs\Win10.vhdx -Path .\VMData -Generation 2 -SwitchName ExternalSwitch

下列參數可用來指定虛擬硬碟。

若要以新的虛擬硬碟建立虛擬機器,請將上述範例中的 -VHDPath 參數取代為 -NewVHDPath,並新增 -NewVHDSizeBytes 參數,如下所示:

New-VM -ComputerName Server1 -Name VM1 -MemoryStartupBytes 4GB -BootDevice VHD -NewVHDPath .\VMs\Win10.vhdx -Path .\VMData -NewVHDSizeBytes 20GB -Generation 2 -SwitchName ExternalSwitch  

若要以新的虛擬磁碟建立以作業系統映像開機的虛擬機器,請參閱為 Windows 10 上的 Hyper-V 建立虛擬機器的逐步解說中的 PowerShell 範例。

取得 VM 清單

下列範例會傳回 Server1 上所有 VM 的清單。

Get-VM -ComputerName Server1

下列範例會使用 Where-Object 命令新增篩選器,以傳回伺服器上所有執行中 VM 的清單。 如需詳細資訊,請參閱使用 Where-Object 文件。

Get-VM -ComputerName Server1 | Where-Object -Property State -eq "Running"

下一個範例會傳回伺服器上所有關機 VM 的清單。

Get-VM -ComputerName Server1 | Where-Object -Property State -eq "Off"

啟動和停止 VM

使用 Start-VMStop-VM 命令分別可啟動或停止 VM。 如需詳細資訊,請參閱 Start-VMStop-VM 參考文件。

下列範例說明如何啟動名為 VM1 的 VM:

Start-VM -Name VM1 -ComputerName Server1

下列範例說明如何關閉名為 TestVM 的 VM:

Stop-VM -Name VM1 -ComputerName Server1

移動 VM

Move-VM Cmdlet 會將 VM 移至不同的伺服器。 如需詳細資訊,請參閱 Move-VM 參考文件。

下列範例說明在 VM 儲存於 Server1 上的 SMB 共用時,如何將該 VM 移至 Server2:

Move-VM -ComputerName Server1 -Name VM1 -DestinationHost Server2

下列範例說明如何將 VM 從 Server1 移至 Server2,並將與該 VM 相關聯的所有檔案移至遠端電腦上的 D:\VM_name:

Move-VM -ComputerName Server1 -Name VM1 -DestinationHost Server2 -IncludeStorage -DestinationStoragePath D:\VM_name

匯入或匯出 VM

Import-VMExport-VM Cmdlet 會匯入和匯出 VM。 以下顯示幾個範例。 如需詳細資訊,請參閱 Import-VMExport-VM 參考文件。

下列範例說明如何從組態檔匯入 VM。 由於 VM 已就地註冊,因此不會複製其檔案:

Import-VM -ComputerName Server1 -Name VM1 -Path 'C:\<vm export path>\2B91FEB3-F1E0-4FFF-B8BE-29CED892A95A.vmcx'

下列範例會將 VM 匯出至 D 磁碟機的根目錄:

Export-VM -ComputerName Server1 -Name VM1 -Path D:\

重新命名 VM

Rename-VM Cmdlet 可用來重新命名 VM。 如需詳細資訊,請參閱 Rename-VM 參考文件。

下列範例會將 VM1 重新命名為 VM2,並顯示重新命名的虛擬機器:

Rename-VM -ComputerName Server1 -Name VM1 -NewName VM2

建立 VM 檢查點

Checkpoint-VM Cmdlet 可用來建立 VM 的檢查點。 如需詳細資訊,請參閱 Checkpoint-VM 參考文件。

下列範例會為名為 Test 的 VM 建立名為 BeforeInstallingUpdates 的檢查點。

Checkpoint-VM -ComputerName Server1 -Name VM1 -SnapshotName BeforeInstallingUpdates

建立 VM 的 VHD

New-VHD Cmdlet 可用來為 VM 建立新的 VHD。 如需其使用方式的詳細資訊,請參閱 New-VHD 參考文件。

下列範例會採用 VHDX 格式,建立大小為 10 GB 的動態虛擬硬碟。 由於未指定任何類型,因此副檔名會決定要使用的動態格式和預設類型。

Get-ClusterGroup

將網路介面卡新增至 VM

Add-VMNetworkAdapter Cmdlet 可用來將虛擬網路介面卡新增至 VM。 以下顯示幾個範例。 如需其使用方式的詳細資訊,請參閱 Add-VMNetworkAdapter 參考文件。

下列範例會將名為 Redmond NIC1 的虛擬網路介面卡新增至名為 VM1 的虛擬機器:

Add-VMNetworkAdapter -ComputerName Server1 -VMName VM1 -Name "Redmond NIC1"

此範例會將虛擬網路介面卡新增至名為 VM1 的虛擬機器,並將其連線至名為 Network 的虛擬交換器:

Add-VMNetworkAdapter -ComputerName Server1 -VMName VM1 -SwitchName Network

建立 VM 的虛擬交換器

New-VMSwitch Cmdlet 可用來新增 VM 主機上的虛擬交換器。 如需其使用方式的詳細資訊,請參閱 New-VMSwitch 參考文件。

下列範例會建立名為 "QoS switch" 的新交換器,並將其繫結至名為 Wired Ethernet Connection 3 的網路介面卡,以支援以權數為基礎的最小頻寬。

New-VMSwitch "QoS Switch" -NetAdapterName "Wired Ethernet Connection 3" -MinimumBandwidthMode Weight

設定 VM 的記憶體

Set-VMMemory Cmdlet 可用來設定 VM 的記憶體。 如需其使用方式的詳細資訊,請參閱 Set-VMMemory 參考文件。

下列範例會在名為 VM1 的 VM 上啟用動態記憶體,並設定其記憶體下限、啟動記憶體及記憶體上限、其記憶體優先順序,以及其緩衝區。

Set-VMMemory -ComputerName Server1 -Name VM1 -DynamicMemoryEnabled $true -MinimumBytes 64MB -StartupBytes 256MB -MaximumBytes 2GB -Priority 80 -Buffer 25

設定 VM 的虛擬處理器

Set-VMProcessor Cmdlet 可用來設定 VM 的虛擬處理器。 如需其使用方式的詳細資訊,請參閱 Set-VMProcessor 參考文件。

下列範例會設定名為 VM1 的 VM,具有兩個虛擬處理器、10% 的保留、75% 的限制,以及相對權數 200。

Set-VMProcessor -ComputerName Server1 -Name VM1 -Count 2 -Reserve 10 -Maximum 75 -RelativeWeight 200

移除 VM

若要移除或刪除 VM 及其資源,請先使用下列 Cmdlet 來尋找:

Get-ClusterGroup

然後,針對您想要從叢集中移除的每個 VM 執行下列 Cmdlet:

Remove-ClusterGroup -RemoveResources -Name VM1

後續步驟

您也可以使用 Windows 系統管理中心來建立和管理 VM。 如需詳細資訊,請參閱 Windows 系統管理中心