Lire en anglais
Partager via
微博
使用 PowerShell 从专用磁盘创建 VM
适用于:✔️ Windows VM
通过将现有 OS 磁盘附加到新 VM 来创建新的 VM。 如果你有一个未正常工作的 VM,此选项很有用。 可以删除该 VM,然后重用磁盘创建新 VM。
重要
还可以使用 VHD 作为源来创建 Azure Compute Gallery 映像。 有关详细信息,请参阅创建映像定义和映像版本。 建议客户使用 Azure Compute Gallery,因为只有 Azure Compute Gallery 支持 ARM64、受信任启动和机密 VM 等各项新功能。 创建映像而不是仅附加磁盘意味着可以从同一个源磁盘创建多个 VM。
使用专用磁盘创建新 VM 时,新 VM 会保留原始 VM 的计算机名。 还会保留其他计算机特定信息(如 CMID)。在某些情况下,这种重复信息可能会导致问题。 复制 VM 时,请注意应用程序依赖哪些类型的计算机特定信息。
我们建议你将单个 VHD 或快照的并发部署数限制为 20 个 VM。
创建一个快照,然后根据该快照创建一个磁盘。 此策略可以保留原始 VHD 作为回退的依据:
- 打开 Azure 门户。
- 在搜索框中,输入“磁盘”,然后选择“磁盘”以显示可用磁盘列表。
- 选择要使用的磁盘。 此时会显示该磁盘的“磁盘”页 。
- 从顶部菜单选择“创建快照” 。
- 为快照选择一个资源组。 可以使用现有资源组,也可以创建新组。
- 输入快照的“名称” 。
- 对于“快照类型”,请选择“完全”。
- 对于“存储类型”,请选择“标准 HDD”、高级 SSD”或“区域冗余”存储。
- 完成后,选择“查看 + 创建”来创建快照。
- 创建快照后,选择“主页”>“创建资源”。
- 在搜索框中输入“托管磁盘”,然后从列表中选择“托管磁盘” 。
- 在“托管磁盘”页上选择“创建” 。
- 为磁盘选择一个资源组。 可以使用现有资源组,也可以创建新组。 该选择也将用作在其中根据磁盘创建 VM 的资源组。
- 对于“区域”,必须选择快照所在的同一区域。
- 输入磁盘的名称 。
- 在“源类型”中,确保选中“快照” 。
- 在“源快照” 下拉列表中,选择要使用的快照。
- 对于“大小”,可以根据需要更改存储类型和大小。
- 根据需要进行任何其他调整,然后选择“查看 + 创建”来创建磁盘。 通过验证后,选择“创建”。
有了要使用的磁盘以后,即可在门户中创建 VM:
- 在搜索框中,输入“磁盘”,然后选择“磁盘”以显示可用磁盘列表。
- 选择要使用的磁盘。 此时会打开该磁盘的“磁盘”页 。
- 在“概要”部分中,确保“磁盘状态”列为“未附加”。 否则,可能需要将磁盘从 VM 拆离,或者需要删除 VM 以释放磁盘空间。
- 在页面顶部的菜单中选择“创建 VM” 。
- 在新 VM 的“基本信息”页中输入一个“虚拟机名称”,然后选择现有“资源组”或创建新组 。
- 对于大小,选择“更改大小”以访问“大小”页 。
- 磁盘名称应在“映像”部分预先填充。
- 在“磁盘”页上,你可能会注意到“OS 磁盘类型”无法更改。 此预选值在创建快照或 VHD 时配置,并将转移到新 VM。 如果需要修改磁盘类型,请从现有 VM 或磁盘拍摄新快照。
- 在“网络”页中,可以让门户创建所有新的资源,也可以选择现有的“虚拟网络”和“网络安全组” 。 门户始终为新 VM 创建新网络接口和公共 IP 地址。
- 在“管理”页上,对监视的选项进行任何更改 。
- 完成操作后,选择“查看 + 创建” 。
- 如果 VM 配置通过验证,则选择“创建”以启动部署 。
如果你的 VM 已删除,并且你希望重复使用 OS 磁盘创建新 VM,请使用 Get-AzDisk。
$resourceGroupName = 'myResourceGroup'
$osDiskName = 'myOsDisk'
$osDisk = Get-AzDisk `
-ResourceGroupName $resourceGroupName `
-DiskName $osDiskName
现在可以将此磁盘作为 OS 磁盘附加到新 VM。
为 VM 创建虚拟网络和子网。
创建子网。 本示例在资源组“myDestinationResourceGroup”中创建名为“mySubNet”的子网,并将子网地址前缀设置为 10.0.0.0/24 。
$subnetName = 'mySubNet'
$singleSubnet = New-AzVirtualNetworkSubnetConfig `
-Name $subnetName `
-AddressPrefix 10.0.0.0/24
创建虚拟网络。 本示例将虚拟网络名称设置为 myVnetName,将位置设置为“中国北部”,将虚拟网络的地址前缀设置为 10.0.0.0/16。
$vnetName = "myVnetName"
$vnet = New-AzVirtualNetwork `
-Name $vnetName -ResourceGroupName $destinationResourceGroup `
-Location $location `
-AddressPrefix 10.0.0.0/16 `
-Subnet $singleSubnet
若要使用远程桌面协议 (RDP) 登录到 VM,需要创建一个允许在端口 3389 上进行 RDP 访问的安全规则。 在本示例中,由于新 VM 的 VHD 是从现有 Windows 专用 VM 创建的,因此,可将源虚拟机中的帐户用于 RDP。 此示例拒绝 RDP 流量,确保更安全。 如果要允许 RDP 访问,可将 -Access 更改为 Allow。
本示例将网络安全组 (NSG) 名称设置为 myNsg,将 RDP 规则名称设置为 myRdpRule。
$nsgName = "myNsg"
$rdpRule = New-AzNetworkSecurityRuleConfig -Name myRdpRule -Description "Deny RDP" `
-Access Deny -Protocol Tcp -Direction Inbound -Priority 110 `
-SourceAddressPrefix Internet -SourcePortRange * `
-DestinationAddressPrefix * -DestinationPortRange 3389
$nsg = New-AzNetworkSecurityGroup `
-ResourceGroupName $destinationResourceGroup `
-Location $location `
-Name $nsgName -SecurityRules $rdpRule
有关终结点和 NSG 规则的详细信息,请参阅使用网络安全组筛选网络流量。
若要与虚拟网络中的虚拟机通信,需要一个 公共 IP 地址和网络接口。
创建公共 IP。 在此示例中,公共 IP 地址名称设置为 myIP。
$ipName = "myIP"
$pip = New-AzPublicIpAddress `
-Name $ipName -ResourceGroupName $destinationResourceGroup `
-Location $location `
-AllocationMethod Static
创建 NIC。 在此示例中,NIC 名称设置为 myNicName。
$nicName = "myNicName"
$nic = New-AzNetworkInterface -Name $nicName `
-ResourceGroupName $destinationResourceGroup `
-Location $location -SubnetId $vnet.Subnets[0].Id `
-PublicIpAddressId $pip.Id `
-NetworkSecurityGroupId $nsg.Id
设置 VM 名称和大小。 此示例将 VM 名称设置为“myVM”,将 VM 大小设置为“Standard_A2” 。
$vmName = "myVM"
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize "Standard_A2"
添加 NIC。
$vm = Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id
添加 OS 磁盘。 使用 Set-AzVMOSDisk 向配置中添加 OS 磁盘。 此示例将磁盘大小设置为 128 GB 并附加磁盘作为 Windows OS 磁盘。
$vm = Set-AzVMOSDisk -VM $vm -ManagedDiskId $osDisk.Id -StorageAccountType Standard_LRS `
-DiskSizeInGB 128 -CreateOption Attach -Windows
使用 New-AzVM 以及刚才创建的配置创建 VM。
New-AzVM -ResourceGroupName $destinationResourceGroup -Location $location -VM $vm
如果此命令成功,则会显示类似于下面的输出:
RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
True OK OK
应会在 Azure 门户的“浏览”>“虚拟机”下看到新建的 VM,也可以使用以下 PowerShell 命令查看该 VM。
$vmList = Get-AzVM -ResourceGroupName $destinationResourceGroup
$vmList.Name
后续步骤详细了解 Azure Compute Gallery。
Ressources supplémentaires
-
Last updated on
2026-01-22