Modificare il set di disponibilità per una VM WindowsChange the availability set for a Windows VM

I passaggi seguenti descrivono come modificare il set di disponibilità di una VM tramite Azure PowerShell.The following steps describe how to change the availability set of a VM using Azure PowerShell. Una VM può essere aggiunta a un set di disponibilità solo in fase di creazione.A VM can only be added to an availability set when it is created. Per modificare il set di disponibilità, è necessario eliminare e ricreare la macchina virtuale.In order to change the availability set, you need to delete and recreate the virtual machine.

Modificare il set di disponibilità tramite PowerShellChange the availability set using PowerShell

  1. Acquisire i dettagli principali seguenti dalla VM da modificare.Capture the following key details from the VM to be modified.

    Nome della VMName of the VM

    $vm = Get-AzureRmVM -ResourceGroupName <Name-of-resource-group> -Name <name-of-VM>
    $vm.Name
    

    Dimensioni macchina virtualeVM Size

    $vm.HardwareProfile.VmSize
    

    Interfaccia di rete primaria e interfacce di rete facoltative, se presenti, nella VMNetwork primary network interface and optional network interfaces if they exist on the VM

    $vm.NetworkProfile.NetworkInterfaces[0].Id
    

    Profilo del disco del sistema operativoOS Disk Profile

    $vm.StorageProfile.OsDisk.OsType
    $vm.StorageProfile.OsDisk.Name
    $vm.StorageProfile.OsDisk.Vhd.Uri
    

    Profilo di ogni disco datiDisk profiles for each data disk

    $vm.StorageProfile.DataDisks[<index>].Lun
    $vm.StorageProfile.DataDisks[<index>].Vhd.Uri
    

    Estensioni VM installateVM extensions installed

    $vm.Extensions
    
  2. Eliminare la VM senza eliminare i dischi o le interfacce di rete.Delete the VM without deleting any of the disks or the network interfaces.

    Remove-AzureRmVM -ResourceGroupName <resourceGroupName> -Name <vmName> 
    
  3. Creare il set di disponibilità, se non esiste giàCreate the availability set if it does not already exist

    New-AzureRmAvailabilitySet -ResourceGroupName <resourceGroupName> -Name <availabilitySetName> -Location "<location>" 
    
  4. Ricreare la VM usando il nuovo set di disponibilitàRecreate the VM using the new availability set

    $vm2 = New-AzureRmVMConfig -VMName <VM-name> -VMSize <vm-size> -AvailabilitySetId <availability-set-id>
    
    Set-AzureRmVMOSDisk -CreateOption "Attach" -VM <vmConfig> -VhdUri <osDiskURI> -Name <osDiskName> [-Windows | -Linux]
    
    Add-AzureRmVMNetworkInterface -VM <vmConfig> -Id  <nicId> 
    
    New-AzureRmVM -ResourceGroupName <resourceGroupName> -Location <location> -VM <vmConfig>
    
  5. Aggiungere dischi dati ed estensioni.Add data disks and extensions. Per altre informazioni, vedere l'articolo su come collegare un disco dati a una VM e la sezione relativa alle estensioni nei modelli di Resource Manager.For more information, see Attach Data Disk to VM and Extensions in Resource Manager templates. È possibile aggiungere estensioni e dischi dati alla VM tramite PowerShell o l'interfaccia della riga di comando di Azure.Data disks and extensions can be added to the VM using PowerShell or Azure CLI.

Script di esempioExample Script

Lo script seguente offre un esempio di raccolta delle informazioni necessarie ed eliminazione e ricreazione della VM originale in un nuovo set di disponibilità.The following script provides an example of gathering the required information, deleting the original VM and then recreating it in a new availability set.

    #set variables
    $rg = "demo-resource-group"
    $vmName = "demo-vm"
    $newAvailSetName = "demo-as"
    $outFile = "C:\temp\outfile.txt"

    #Get VM Details
    $OriginalVM = get-azurermvm -ResourceGroupName $rg -Name $vmName

    #Output VM details to file
    "VM Name: " | Out-File -FilePath $outFile 
    $OriginalVM.Name | Out-File -FilePath $outFile -Append

    "Extensions: " | Out-File -FilePath $outFile -Append
    $OriginalVM.Extensions | Out-File -FilePath $outFile -Append

    "VMSize: " | Out-File -FilePath $outFile -Append
    $OriginalVM.HardwareProfile.VmSize | Out-File -FilePath $outFile -Append

    "NIC: " | Out-File -FilePath $outFile -Append
    $OriginalVM.NetworkProfile.NetworkInterfaces[0].Id | Out-File -FilePath $outFile -Append

    "OSType: " | Out-File -FilePath $outFile -Append
    $OriginalVM.StorageProfile.OsDisk.OsType | Out-File -FilePath $outFile -Append

    "OS Disk: " | Out-File -FilePath $outFile -Append
    $OriginalVM.StorageProfile.OsDisk.Vhd.Uri | Out-File -FilePath $outFile -Append

    if ($OriginalVM.StorageProfile.DataDisks) {
    "Data Disk(s): " | Out-File -FilePath $outFile -Append
    $OriginalVM.StorageProfile.DataDisks | Out-File -FilePath $outFile -Append
    }

    #Remove the original VM
    Remove-AzureRmVM -ResourceGroupName $rg -Name $vmName

    #Create new availability set if it does not exist
    $availSet = Get-AzureRmAvailabilitySet -ResourceGroupName $rg -Name $newAvailSetName -ErrorAction Ignore
    if (-Not $availSet) {
    $availset = New-AzureRmAvailabilitySet -ResourceGroupName $rg -Name $newAvailSetName -Location $OriginalVM.Location
    }

    #Create the basic configuration for the replacement VM
    $newVM = New-AzureRmVMConfig -VMName $OriginalVM.Name -VMSize $OriginalVM.HardwareProfile.VmSize -AvailabilitySetId $availSet.Id
    Set-AzureRmVMOSDisk -VM $NewVM -VhdUri $OriginalVM.StorageProfile.OsDisk.Vhd.Uri  -Name $OriginalVM.Name -CreateOption Attach -Windows

    #Add Data Disks
    foreach ($disk in $OriginalVM.StorageProfile.DataDisks ) { 
    Add-AzureRmVMDataDisk -VM $newVM -Name $disk.Name -VhdUri $disk.Vhd.Uri -Caching $disk.Caching -Lun $disk.Lun -CreateOption Attach -DiskSizeInGB $disk.DiskSizeGB
    }

    #Add NIC(s)
    foreach ($nic in $OriginalVM.NetworkProfile.NetworkInterfaces) {
        Add-AzureRmVMNetworkInterface -VM $NewVM -Id $nic.Id
    }

    #Create the VM
    New-AzureRmVM -ResourceGroupName $rg -Location $OriginalVM.Location -VM $NewVM -DisableBginfoExtension

Passaggi successiviNext steps

Aumentare lo spazio di archiviazione della VM aggiungendo un ulteriore disco dati.Add additional storage to your VM by adding an additional data disk.