Spostare una VM (classica) o un'istanza del ruolo di Servizi cloud in un'altra subnet mediante PowerShellMove a VM (Classic) or Cloud Services role instance to a different subnet using PowerShell

È possibile usare PowerShell per spostare le proprie VM (classiche) da una subnet a un'altra nella stessa rete virtuale (VNet).You can use PowerShell to move your VMs (Classic) from one subnet to another in the same virtual network (VNet). Le istanze del ruolo possono essere spostate modificando il file CSCFG invece di usare PowerShell.Role instances can be moved by editing the CSCFG file, rather than using PowerShell.

Nota

Questo articolo spiega come spostare solo le VM distribuite tramite il modello di distribuzione classica.This article explains how to move VMs deployed through the classic deployment model only.

Perché spostare le macchine virtuali in un'altra subnet?Why move VMs to another subnet? La migrazione in un'altra subnet è utile quando la subnet corrente è troppo piccola e non può essere espansa a causa delle macchine virtuali in esecuzione al suo interno.Subnet migration is useful when the older subnet is too small and cannot be expanded due to existing running VMs in that subnet. In tal caso, è possibile creare una nuova subnet più grande, migrarvi le macchine virtuali e al termine eliminare la precedente subnet ormai vuota.In that case, you can create a new, larger subnet and migrate the VMs to the new subnet, then after migration is complete, you can delete the old empty subnet.

Come spostare una macchina virtuale in un'altra subnetHow to move a VM to another subnet

Per spostare una macchina virtuale, eseguire il cmdlet di PowerShell Set-AzureSubnet usando l'esempio seguente come modello.To move a VM, run the Set-AzureSubnet PowerShell cmdlet, using the example below as a template. In tale esempio TestVM viene spostata dalla subnet corrente a Subnet-2.In the example below, we are moving TestVM from its present subnet, to Subnet-2. Ricordarsi di modificare l'esempio in base all'ambiente in uso.Be sure to edit the example to reflect your environment. Si noti che, ogni volta che il cmdlet Update-AzureVM viene eseguito in una procedura, riavvierà la macchina virtuale come parte del processo di aggiornamento.Note that whenever you run the Update-AzureVM cmdlet as part of a procedure, it will restart your VM as part of the update process.

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

Se è stato specificato un indirizzo IP privato interno statico per la macchina virtuale, sarà necessario cancellare tale impostazione prima di poter spostare la macchina virtuale in una nuova subnet.If you specified a static internal private IP for your VM, you'll have to clear that setting before you can move the VM to a new subnet. In questo caso, usare quanto segue:In that case, use the following:

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

Per spostare un'istanza del ruolo in un'altra subnetTo move a role instance to another subnet

Per spostare un'istanza del ruolo, modificare il file CSCFG.To move a role instance, edit the CSCFG file. Nell'esempio seguente "Role0" nella rete virtuale VNETName viene spostato dalla subnet corrente a Subnet-2.In the example below, we are moving "Role0" in virtual network VNETName from its present subnet to Subnet-2. Poiché l'istanza del ruolo è già stata distribuita, sarà necessario solo modificare Subnet name = Subnet-2.Because the role instance was already deployed, you'll just change the Subnet name = Subnet-2. Ricordarsi di modificare l'esempio in base all'ambiente in uso.Be sure to edit the example to reflect your environment.

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