使用 Windows PowerShell 管理 Azure 本地 VM
适用于:Azure 本地版本 23H2 和 22H2;Windows Server 2022、Windows Server 2019
本文介绍如何使用 Windows PowerShell 在 Azure 本地创建和管理虚拟机(VM)。
注意
在 Azure 本地版本 23H2 上创建和管理 VM 的建议方法是使用 Azure Arc 控制平面。 但是,由于本文中所述的功能尚未由 Azure Arc 提供,因此可以使用 Windows Admin Center 或 PowerShell,如下所示。 请注意,以这种方式创建的 VM 不是已启用 Arc 的 VM。 Azure Arc 控制平面的可管理性有限,Azure 混合权益更少,例如,不免费使用 Azure 更新管理器。
关于使用 PowerShell 管理 VM
通常,从远程计算机管理 VM,而不是在 Azure 本地的主机上管理 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
该 cmdlet 将 Move-VM
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 并显示重命名的 VM:
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。