Udostępnij za pośrednictwem


Zmienianie zestawu dostępności maszyny wirtualnej przy użyciu programu Azure PowerShell

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux maszyny wirtualne z ✔️ systemem Windows

W poniższych krokach opisano sposób zmiany zestawu dostępności maszyny wirtualnej przy użyciu programu Azure PowerShell. Maszynę wirtualną można dodać do zestawu dostępności tylko podczas tworzenia maszyny wirtualnej. Aby zmienić zestaw dostępności, musisz usunąć maszynę wirtualną, a następnie ponownie utworzyć maszynę wirtualną.

Ten artykuł został ostatnio przetestowany 12 lutego 2019 r. przy użyciu usługi Azure Cloud Shell i modułu Az programu PowerShell w wersji 1.2.0.

Ostrzeżenie

Jest to tylko przykład. W niektórych przypadkach należy zaktualizować je dla określonego wdrożenia.

Upewnij się, że dyski są ustawione detach jako opcja usuwania . Jeśli są one ustawione na delete, zaktualizuj maszyny wirtualne przed usunięciem maszyn wirtualnych.

Jeśli maszyna wirtualna jest dołączona do modułu równoważenia obciążenia, musisz zaktualizować skrypt, aby obsłużyć ten przypadek.

Po zakończeniu tego procesu może być również konieczne ponowne zainstalowanie niektórych rozszerzeń.

Jeśli maszyna wirtualna korzysta z korzyści hybrydowych, należy zaktualizować przykład, aby włączyć korzyści hybrydowe na nowej maszynie wirtualnej.

Wymagania wstępne

Brak

Zmienianie zestawu dostępności

Poniższy skrypt zawiera przykład zbierania wymaganych informacji, usuwania oryginalnej maszyny wirtualnej, a następnie ponownego tworzenia jej w nowym zestawie dostępności:

  # 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