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

适用于:Azure Stack HCI、版本 22H2、Windows Server 2022、Windows Server 2019

本文介绍如何使用 Windows PowerShell 在 Azure Stack HCI 上创建和管理虚拟机 (VM)。

关于使用 PowerShell 管理 VM

通常,你可以从远程计算机(而不是群集中的主机服务器)管理 VM。 此远程计算机称为管理计算机。

从某一管理计算机运行 PowerShell 命令时,请将 -ComputerName 参数与你管理的主机服务器的名称配合使用。 允许使用 NetBIOS 名称、IP 地址和完全限定的域名。

有关使用 PowerShell 管理 VM 的完整参考文档,请参阅 Hyper-V 参考

创建 VM

New-VM cmdlet 用于创建新的 VM。 有关详细用法,请查看 New-VM 参考文档。

下面是使用现有虚拟硬盘创建新的 VM 时可以指定的设置,其中:

  • -Name 是为你要创建的虚拟机提供的名称。

  • -MemoryStartupBytes 是启动时可供虚拟机使用的内存量。

  • -BootDevice 是虚拟机在启动时引导到的设备。 通常情况下,它是虚拟硬盘 (VHD)、.iso 文件(对于基于 DVD 的引导)或网络适配器 (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-VM 和 Export-VM 参考文档

下面的示例展示了如何基于 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。 有关如何使用该 cmdlet 的详细信息,请查看 New-VHD 参考文档。

向 VM 添加网络适配器

Add-VMNetworkAdapter cmdlet 用于向 VM 添加虚拟网络适配器。 下面显示了一些示例。 有关如何使用该 cmdlet 的详细信息,请查看 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 主机上新建虚拟交换机。 有关如何使用该 cmdlet 的详细信息,请查看 New-VMSwitch 参考文档。

以下示例创建一个名为“QoS switch”的新交换机,该交换机绑定到名为 Wired Ethernet Connection 3 的网络适配器,并支持基于权重的最小带宽。

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

为 VM 设置内存

Set-VMMemory cmdlet 用于为 VM 配置内存。 有关如何使用该 cmdlet 的详细信息,请查看 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 配置虚拟处理器。 有关如何使用该 cmdlet 的详细信息,请查看 Set-VMProcessor 参考文档。

下面的示例配置名为 VM1 的 VM,该 VM 具有两个虚拟处理器,预留比例为 10%,限制为 75%,相对权重为 200。

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

删除 VM

通过 PowerShell 移除或删除 VM 会删除 VM 的配置文件,但不会删除关联的虚拟硬盘。 如果要删除 VM 及其所有文件(包括虚拟硬盘),请考虑使用 Windows Admin Center

删除 VM 之前,请确保 VM 已关闭。 请记住,删除 VM 会不可逆地删除配置文件。

从服务器中删除 VM

若要从服务器中移除或删除 VM 及其资源,请首先使用以下 cmdlet 查找服务器上的所有 VM:

Get-VM -Name VM1

然后,针对要从服务器中删除的每台 VM 运行以下 cmdlet:

Remove-VM -Name VM1

从群集中删除 VM

若要从群集中移除或删除 VM 及其资源,请首先使用以下 cmdlet 查找它们:

Get-ClusterGroup

然后,针对要从群集中删除的每台 VM 运行以下 cmdlet:

Remove-ClusterGroup -RemoveResources -Name VM1

后续步骤

你还可以使用 Windows Admin Center 创建和管理 VM。 有关详细信息,请参阅 Windows Admin Center