使用 PowerShell 将 VM(经典)或云服务角色实例移到其他子网

可以使用 PowerShell 将 VM(经典)从一个子网移到同一虚拟网络(VNet)中的另一个子网。 可以通过编辑 CSCFG 文件而不是使用 PowerShell 来移动角色实例。

注释

本文介绍如何移动仅通过经典部署模型部署的虚拟机。

为什么将 VM 移到另一个子网? 当旧子网太小且由于该子网中现有的正在运行的 VM 而无法扩展时,子网迁移非常有用。 在这种情况下,可以创建新的更大的子网并将 VM 迁移到新子网,然后在迁移完成后,可以删除旧的空子网。

如何将 VM 移到另一个子网

若要移动 VM,请使用以下示例作为模板运行 Set-AzureSubnet PowerShell cmdlet。 在下面的示例中,我们将 TestVM 从其当前子网移动到 Subnet-2。 请务必编辑示例以反映环境。 请注意,每当在过程中运行 Update-AzureVM cmdlet 时,它将在更新过程中重启 VM。

Get-AzureVM –ServiceName TestVMCloud –Name TestVM `
| Set-AzureSubnet –SubnetNames Subnet-2 `
| Update-AzureVM

如果为 VM 指定了静态内部专用 IP,则必须清除该设置,然后才能将 VM 移到新子网。 在这种情况下,请使用以下内容:

Get-AzureVM -ServiceName TestVMCloud -Name TestVM `
| Remove-AzureStaticVNetIP `
| Update-AzureVM
Get-AzureVM -ServiceName TestVMCloud -Name TestVM `
| Set-AzureSubnet -SubnetNames Subnet-2 `
| Update-AzureVM

将角色实例移到另一个子网

若要移动角色实例,请编辑 CSCFG 文件。 在以下示例中,我们将虚拟网络中的“Role0”从其当前子网移动到 Subnet-2VNETName。 由于角色实例已部署,因此只需更改子网名称 = Subnet-2。 请务必编辑示例以反映环境。

<NetworkConfiguration>
    <VirtualNetworkSite name="VNETName" />
    <AddressAssignments>
       <InstanceAddress roleName="Role0">
            <Subnets><Subnet name="Subnet-2" /></Subnets>
       </InstanceAddress>
    </AddressAssignments>
</NetworkConfiguration>