使用 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 上创建和管理 VM 的建议方法是使用 Azure Arc 控制平面 23H2。 但是,由于本文中所述的功能尚未由 Azure Arc 提供,因此可以使用 Windows Admin Center 或 PowerShell,如下所示。 请注意,以这种方式创建的 VM 不是已启用 Arc 的 VM。 Azure Arc 控制平面的可管理性有限,Azure 混合权益更少,例如,不免费使用 Azure 更新管理器。
关于使用 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-VM
和 Stop-VM
命令启动或停止 VM。 有关详细信息,请查看 Start-VM 和 Stop-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-VM
和 Export-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。