# Set variables
$resourceGroup = 'myResourceGroup'
$vmName = 'myVM'
$size = 'Standard_DS3_v2'
# Get the VM
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
# Change the VM size
$vm.HardwareProfile.VmSize = $size
# Update the VM
Update-AzVM -ResourceGroupName $resourceGroup -VM $vm
# Import the Azure module
Import-Module Az
# Login to your Azure account
Connect-AzAccount
# Set variables
$resourceGroup = 'myResourceGroup'
$vmName = 'myVM'
$size = 'Standard_DS3_v2'
# Select the subscription
Select-AzSubscription -SubscriptionId '<subscriptionID>'
# Get the VM
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
# Change the VM size
$vm.HardwareProfile.VmSize = $size
# Update the VM
Update-AzVM -ResourceGroupName $resourceGroup -VM $vm
如果可用性設定組中的 VM 新大小不適用於目前裝載 VM 的硬體叢集,則必須解除配置可用性設定組中所有的 VM,才能調整 VM 大小。 在已調整某個 VM 的大小後,您也可能需要更新可用性設定組中其他 VM 的大小。 若要調整可用性設定組中的 VM 大小,請執行下列指令碼。 您可以將 $resourceGroup、$vmName、$newVmSize 和 $availabilitySetName 的值取代為您自己的值。
# Set variables
$resourceGroup = "myResourceGroup"
$vmName = "myVM"
$newVmSize = "<newVmSize>"
$availabilitySetName = "<availabilitySetName>"
# Check if the desired VM size is available
$availableSizes = Get-AzVMSize `
-ResourceGroupName $resourceGroup `
-VMName $vmName |
Select-Object -ExpandProperty Name
if ($availableSizes -notcontains $newVmSize) {
# Deallocate all VMs in the availability set
$as = Get-AzAvailabilitySet `
-ResourceGroupName $resourceGroup `
-Name $availabilitySetName
$virtualMachines = $as.VirtualMachinesReferences | Get-AzResource | Get-AzVM
$virtualMachines | Stop-AzVM -Force -NoWait
# Resize and restart the VMs in the availability set
$virtualMachines | Foreach-Object { $_.HardwareProfile.VmSize = $newVmSize }
$virtualMachines | Update-AzVM
$virtualMachines | Start-AzVM
exit
}
# Resize the VM
$vm = Get-AzVM `
-ResourceGroupName $resourceGroup `
-VMName $vmName
$vm.HardwareProfile.VmSize = $newVmSize
Update-AzVM `
-VM $vm `
-ResourceGroupName $resourceGroup
這個指令碼會設定變數 $resourceGroup、$vmName、$newVmSize 和 $availabilitySetName。 然後,它會使用 Get-AzVMSize 檢查所需的 VM 大小是否可用,並檢查輸出是否包含所需的大小。 如果所需的大小無法使用,指令碼會解除配置可用性設定組中的所有 VM、調整其大小,然後重新加以啟動。 如果有所需的大小可用,指令碼會調整 VM 的大小。
下列指令碼會在重設大小之前,檢查所需的 VM 大小是否可用。 如果所需的大小無法使用,指令碼會結束並出現錯誤訊息。 如果所需的大小可用,指令碼會解除配置 VM、調整其大小,然後重新加以啟動。 您可以將 resourceGroup、vm、和 size 的值取代為您自己的值。
# Set variables
resourceGroup=myResourceGroup
vm=myVM
size=Standard_DS3_v2
# Check if the desired VM size is available
if ! az vm list-vm-resize-options --resource-group $resourceGroup --name $vm --query "[].name" | grep -q $size; then
echo "The desired VM size is not available."
exit 1
fi
# Deallocate the VM
az vm deallocate --resource-group $resourceGroup --name $vm
# Resize the VM
az vm resize --resource-group $resourceGroup --name $vm --size $size
# Start the VM
az vm start --resource-group $resourceGroup --name $vm
以下指令碼會設定變數 resourceGroup、vm、 和 size。 然後,它會使用 az vm list-vm-resize-options 檢查所需的 VM 大小是否可用,並檢查輸出是否包含所需的大小。 如果所需的大小無法使用,指令碼會結束並出現錯誤訊息。 如果所需的大小可用,指令碼會解除配置 VM、調整其大小,然後重新加以啟動。
# Set variables
resourceGroup="myResourceGroup"
vmName="myVM"
newVmSize="<newVmSize>"
availabilitySetName="<availabilitySetName>"
# Check if the desired VM size is available
availableSizes=$(az vm list-vm-resize-options \
--resource-group $resourceGroup \
--name $vmName \
--query "[].name" \
--output tsv)
if [[ ! $availableSizes =~ $newVmSize ]]; then
# Deallocate all VMs in the availability set
vmIds=$(az vmss list-instances \
--resource-group $resourceGroup \
--name $availabilitySetName \
--query "[].instanceId" \
--output tsv)
az vm deallocate \
--ids $vmIds \
--no-wait
# Resize and restart the VMs in the availability set
az vmss update \
--resource-group $resourceGroup \
--name $availabilitySetName \
--set virtualMachineProfile.hardwareProfile.vmSize=$newVmSize
az vmss start \
--resource-group $resourceGroup \
--name $availabilitySetName \
--instance-ids $vmIds
exit
fi
# Resize the VM
az vm resize \
--resource-group $resourceGroup \
--name $vmName \
--size $newVmSize
若要在 Terraform 程式碼中調整 VM 的大小,請將 azurerm_linux_virtual_machine 或 azurerm_windows_virtual_machine 資源區塊中的 size 參數修改為所需的大小,然後執行 terraform plan -out main.tfplan,以查看將進行的 VM 大小變更。 然後執行 terraform apply main.tfplan 以套用變更以調整 VM 的大小。
重要
當您使用建立原始虛擬機器的狀態檔案時,下列 Terraform 範例會修改現有虛擬機器的大小。 如需完整的 Terraform 程式碼,請參閱 Windows Terraform 快速入門。