Bearbeiten

Freigeben über


Ändern der Verfügbarkeitsgruppe einer VM mithilfe von Azure PowerShell

Gilt für: ✔️ Linux-VMs ✔️ Windows-VMs

Die folgenden Schritte beschreiben, wie Sie die Verfügbarkeitsgruppe einer VM mithilfe von Azure PowerShell ändern. Sie können eine VM einer Verfügbarkeitsgruppe nur während der VM-Erstellung hinzufügen. Um die Verfügbarkeitsgruppe zu ändern, müssen Sie die VM löschen und danach erneut erstellen.

Dieser Artikel wurde zuletzt am 12. Februar 2019 unter Verwendung von Azure Cloud Shell und Version 1.2.0 des Az-PowerShell-Moduls geprüft.

Warnung

Dies ist nur ein Beispiel. In einigen Fällen ist ein Update für Ihre spezifische Bereitstellung erforderlich.

Vergewissern Sie sich, dass die Löschoption für die Datenträger auf detach festgelegt ist. Bei einer Festlegung auf delete aktualisieren Sie die VMs, bevor Sie sie löschen.

Ist Ihr virtueller Computer mit einem Lastenausgleich verknüpft, muss das Skript entsprechend aktualisiert werden.

Einige Erweiterungen müssen möglicherweise erneut installiert werden, nachdem Sie diesen Vorgang abgeschlossen haben.

Wenn Ihre VM Hybridvorteile nutzt, müssen Sie das Beispiel aktualisieren, um Hybridvorteile auf der neuen VM zu aktivieren.

Voraussetzungen

Keine

Ändern der Verfügbarkeitsgruppe

Das folgende Skript zeigt ein Beispiel für das Erfassen der erforderlichen Informationen, das Löschen der ursprünglichen VM und das erneute Erstellen der VM in einer neuen Verfügbarkeitsgruppe:

  # Set variables
      $resourceGroup = "myResourceGroup"
      $vmName = "myVM"
      $newAvailSetName = "myAvailabilitySet"

  # Get the details of the VM to be moved to the availability set
      $originalVM = Get-AzVM `
        -ResourceGroupName $resourceGroup `
        -Name $vmName

  # Create a new availability set if it doesn't exist
      $availSet = Get-AzAvailabilitySet `
        -ResourceGroupName $resourceGroup `
        -Name $newAvailSetName `
        -ErrorAction Ignore
      if (-Not $availSet) {
      $availSet = New-AzAvailabilitySet `
        -Location $originalVM.Location `
        -Name $newAvailSetName `
        -ResourceGroupName $resourceGroup `
        -PlatformFaultDomainCount 2 `
        -PlatformUpdateDomainCount 2 `
        -Sku Aligned
      }

  # Remove the original VM
      Remove-AzVM -ResourceGroupName $resourceGroup -Name $vmName

  # Create the basic configuration for the replacement VM.
      $newVM = New-AzVMConfig `
        -VMName $originalVM.Name `
        -VMSize $originalVM.HardwareProfile.VmSize `
        -AvailabilitySetId $availSet.Id
  
  # For a Linux VM, change the last parameter from -Windows to -Linux
      Set-AzVMOSDisk `
        -VM $newVM -CreateOption Attach `
        -ManagedDiskId $originalVM.StorageProfile.OsDisk.ManagedDisk.Id `
        -Name $originalVM.StorageProfile.OsDisk.Name `
        -Windows

  # Add data disks
      foreach ($disk in $originalVM.StorageProfile.DataDisks) { 
      Add-AzVMDataDisk -VM $newVM `
        -Name $disk.Name `
        -ManagedDiskId $disk.ManagedDisk.Id `
        -Caching $disk.Caching `
        -Lun $disk.Lun `
        -DiskSizeInGB $disk.DiskSizeGB `
        -CreateOption Attach
      }
      
  # Add NICs and keep the same NICs as primary; keep the private IP too, if it exists
      foreach ($nic in $originalVM.NetworkProfile.NetworkInterfaces) {	
      if ($nic.Primary -eq "True")
      {
              Add-AzVMNetworkInterface `
                -VM $newVM `
                -Id $nic.Id -Primary
                }
            else
                {
                  Add-AzVMNetworkInterface `
                  -VM $newVM `
                  -Id $nic.Id 
                  }
        }

  # Re-create the VM
      New-AzVM `
        -ResourceGroupName $resourceGroup `
        -Location $originalVM.Location `
        -VM $newVM `
        -DisableBginfoExtension