VM の可用性セットを変更するChange the availability set for a VM

以下の手順では、Azure PowerShell を使用して VM の可用性セットを変更する方法について説明します。The following steps describe how to change the availability set of a VM using Azure PowerShell. VM を可用性セットに追加できるのは、VM の作成時のみです。A VM can only be added to an availability set when it is created. 可用性セットを変更するには、仮想マシンを削除してから作成し直す必要があります。To change the availability set, you need to delete and then recreate the virtual machine.

この記事は、Linux と Windows の両方の VM に適用されます。This article applies to both Linux and Windows VMs.

この記事は、2019 年 2 月 12 日に Azure Cloud ShellAz PowerShell モジュール バージョン 1.2.0 を使用して最後にテストされました。This article was last tested on 2/12/2019 using the Azure Cloud Shell and the Az PowerShell module version 1.2.0.

この例では、VM がロード バランサーに接続されているかどうかは確認されません。This example does not check to see if the VM is attached to a load balancer. VM がロード バランサーに接続されている場合は、そのケースを処理するようスクリプトを更新する必要があります。If your VM is attached to a load balancer, you will need to update the script to handle that case.

可用性セットを変更するChange the availability set

次のスクリプトでは、必要な情報を収集し、元の VM を削除してから新しい可用性セット内でその VM を作り直す例を示します。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
    $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 new availability set if it does not 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 NIC(s) and keep the same NIC as primary
    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 
                }
    }

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

次のステップNext steps

データ ディスクを追加して、記憶域を VM にさらに追加します。Add additional storage to your VM by adding an additional data disk.