Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: ✔️ Виртуальные машины Linux ✔️ Виртуальные машины Windows
Ниже описано, как изменить группу доступности виртуальной машины с помощью Azure PowerShell. Виртуальную машину можно добавить в группу доступности только при создании виртуальной машины. Чтобы изменить группу доступности, необходимо удалить и повторно создать виртуальную машину.
Эта статья была проверена 12 февраля 2019 г. с помощью Azure Cloud Shell и модуля Az PowerShell версии 1.2.0.
Предупреждение
Это только пример. В некоторых случаях необходимо обновить его для конкретного развертывания.
Убедитесь в том, что для параметра delete дисков задано значение detach
. Если они заданы delete
, обновите виртуальные машины перед удалением виртуальных машин.
Если виртуальная машина подключена к подсистеме балансировки нагрузки, необходимо обновить скрипт для обработки этого случая.
После завершения этого процесса может потребоваться также переустановить некоторые расширения.
Если виртуальная машина использует гибридные преимущества, необходимо обновить пример, чтобы включить гибридные преимущества на новой виртуальной машине.
Необходимые компоненты
Изменение группы доступности
Следующий скрипт содержит пример сбора необходимых сведений, удаления исходной виртуальной машины и последующего повторного создания в новой группе доступности:
# 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