以下步骤说明如何使用 Azure PowerShell 来更改 VM 的可用性集。 只能在创建 VM 时将 VM 添加到可用性集。 如果要更改可用性集,必须将虚拟机删除,并重新创建虚拟机。
使用 PowerShell 更改可用性集
从要修改的 VM 中捕获以下重要详细信息。
VM 的名称
PowerShell复制
$vm=Get-AzureRmVM-ResourceGroupName-Name$vm.Name
VM 大小
PowerShell复制
$vm.HardwareProfile.VmSize
网络主要网络接口和可选的网络接口(如果在 VM 上存在)
PowerShell复制
$vm.NetworkProfile.NetworkInterfaces[0].Id
OS 磁盘配置文件
PowerShell复制
$vm.StorageProfile.OsDisk.OsType$vm.StorageProfile.OsDisk.Name$vm.StorageProfile.OsDisk.Vhd.Uri
每个数据磁盘的磁盘配置文件
PowerShell复制
$vm.StorageProfile.DataDisks[].Lun$vm.StorageProfile.DataDisks[].Vhd.Uri
已安装的 VM 扩展
PowerShell复制
$vm.Extensions
删除 VM 但不删除任何磁盘或网络接口。
PowerShell复制
Remove-AzureRmVM-ResourceGroupName-Name
创建可用性集(如果尚不存在)
PowerShell复制
New-AzureRmAvailabilitySet-ResourceGroupName-Name-Location""
使用新可用性集重新创建 VM
PowerShell复制
$vm2=New-AzureRmVMConfig-VMName-VMSize-AvailabilitySetIdSet-AzureRmVMOSDisk-CreateOption"Attach"-VM-VhdUri-Name [-Windows |-Linux]Add-AzureRmVMNetworkInterface-VM-IdNew-AzureRmVM-ResourceGroupName-Location-VM
添加数据磁盘和扩展。 有关详细信息,请参阅将数据磁盘附加到 VM和资源管理器模板中的扩展。 可以使用 PowerShell 或 Azure CLI 将数据磁盘和扩展添加到 VM。
示例脚本
以下脚本提供一个示例,该示例收集所需的信息、删除原始 VM,并在新可用性集中重新创建 VM。
PowerShell复制
#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-Appendif($OriginalVM.StorageProfile.DataDisks) {"Data Disk(s): "|Out-File-FilePath$outFile-Append$OriginalVM.StorageProfile.DataDisks |Out-File-FilePath$outFile-Append}#Remove the original VMRemove-AzureRmVM-ResourceGroupName$rg-Name$vmName#Create new availability set if it does not exist$availSet=Get-AzureRmAvailabilitySet-ResourceGroupName$rg-Name$newAvailSetName-ErrorActionIgnoreif(-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.IdSet-AzureRmVMOSDisk-VM$NewVM-VhdUri$OriginalVM.StorageProfile.OsDisk.Vhd.Uri-Name$OriginalVM.Name-CreateOptionAttach-Windows#Add Data Disksforeach($diskin$OriginalVM.StorageProfile.DataDisks ) {Add-AzureRmVMDataDisk-VM$newVM-Name$disk.Name-VhdUri$disk.Vhd.Uri-Caching$disk.Caching-Lun$disk.Lun-CreateOptionAttach-DiskSizeInGB$disk.DiskSizeGB}#Add NIC(s)foreach($nicin$OriginalVM.NetworkProfile.NetworkInterfaces) {Add-AzureRmVMNetworkInterface-VM$NewVM-Id$nic.Id}#Create the VMNew-AzureRmVM-ResourceGroupName$rg-Location$OriginalVM.Location-VM$NewVM-DisableBginfoExtension
后续步骤
通过添加附加数据磁盘,向 VM 添加附加存储。立即访问http://market.azure.cn