Quantcast
Channel: MSDN Blogs
Viewing all articles
Browse latest Browse all 5308

Resize Azure VMs in bulk

$
0
0

If you need to do a bulk update of VM sizes from one type to another to take advantage of new technology being released, this script should help you out.

This script will work for Resource Manager VMs, and NOT Classic VMs.
It targets VMs that are deallocated only.

I've preloaded the SizeMapping table with the mapping to move from Dv2 Promo and Av1 sizes to their equivilent Dv3, Ev3 & Av2 sizes.
You can change this as to your requirements, just set the Old and New elements for each record.
Make sure only select ONE subscription from the Select Grid.

$AvailSubscriptions = Get-AzureRmSubscription

$ErrorActionPreference = "Stop"
$SelectedSubscription = $AvailSubscriptions | select Name, Id | Out-GridView -Title "Select ONE (only) Subscription" -PassThru

$SubscriptionGUID = $SelectedSubscription.Id

Select-AzureRmSubscription -Subscription $SubscriptionGUID

$SizeMapping = @()
$SizeMapping += @{Old='Standard_A1';New='Standard_A1_v2'}
$SizeMapping += @{Old='Standard_A2';New='Standard_A2_v2'}
$SizeMapping += @{Old='Standard_A3';New='Standard_A4_v2'}
$SizeMapping += @{Old='Standard_A4';New='Standard_A8_v2'}
$SizeMapping += @{Old='Standard_A5';New='Standard_A2m_v2'}
$SizeMapping += @{Old='Standard_A6';New='Standard_A4m_v2'}
$SizeMapping += @{Old='Standard_A7';New='Standard_A8m_v2'}
$SizeMapping += @{Old='Standard_D2_v2_Promo';New='Standard_D2_v3'}
$SizeMapping += @{Old='Standard_D3_v2_Promo';New='Standard_D4_v3'}
$SizeMapping += @{Old='Standard_D4_v2_Promo';New='Standard_D8_v3'}
$SizeMapping += @{Old='Standard_D5_v2_Promo';New='Standard_D16_v3'}
$SizeMapping += @{Old='Standard_D11_v2_Promo';New='Standard_E2_v3'}
$SizeMapping += @{Old='Standard_D12_v2_Promo';New='Standard_E4_v3'}
$SizeMapping += @{Old='Standard_D13_v2_Promo';New='Standard_E8_v3'}
$SizeMapping += @{Old='Standard_D14_v2_Promo';New='Standard_E16_v3'}
$SizeMapping += @{Old='Standard_DS2_v2_Promo';New='Standard_D2s_v3'}
$SizeMapping += @{Old='Standard_DS3_v2_Promo';New='Standard_D4s_v3'}
$SizeMapping += @{Old='Standard_DS4_v2_Promo';New='Standard_D8s_v3'}
$SizeMapping += @{Old='Standard_DS5_v2_Promo';New='Standard_D16s_v3'}
$SizeMapping += @{Old='Standard_DS11_v2_Promo';New='Standard_E2s_v3'}
$SizeMapping += @{Old='Standard_DS12_v2_Promo';New='Standard_E4s_v3'}
$SizeMapping += @{Old='Standard_DS13_v2_Promo';New='Standard_E8s_v3'}
$SizeMapping += @{Old='Standard_DS14_v2_Promo';New='Standard_E16s_v3'}

$VMs = Get-AzureRmVM
foreach ($VM in $VMs) {
    $Status = Get-AzureRmVM -ResourceGroupName $VM.ResourceGroupName -Name $VM.Name -Status
    if ($Status.Statuses[1].DisplayStatus -eq "VM deallocated" -and $VM.HardwareProfile.VmSize -in $SizeMapping.Old) {
        $NewSize = $SizeMapping.New[$SizeMapping.Old.IndexOf($VM.HardwareProfile.VmSize)]
        $VM.HardwareProfile.VmSize = $NewSize
        Update-AzureRmVM -VM $VM -ResourceGroupName $VM.ResourceGroupName
    }
}


Viewing all articles
Browse latest Browse all 5308

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>