Private/SKU/Get-SkuRetirementInfo.ps1
|
function Get-SkuRetirementInfo { param([string]$SkuName) # Azure VM series retirement data from official Microsoft announcements # https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/retirement/retired-sizes-list # Last verified: 2026-03-27 $retirementLookup = @( # Already retired @{ Pattern = '^Standard_H\d+[a-z]*$'; Series = 'H'; RetireDate = '2024-09-28'; Status = 'Retired' } @{ Pattern = '^Standard_HB60rs$'; Series = 'HBv1'; RetireDate = '2024-09-28'; Status = 'Retired' } @{ Pattern = '^Standard_HC44rs$'; Series = 'HC'; RetireDate = '2024-09-28'; Status = 'Retired' } @{ Pattern = '^Standard_NC\d+r?$'; Series = 'NCv1'; RetireDate = '2023-09-06'; Status = 'Retired' } @{ Pattern = '^Standard_NC\d+r?s_v2$'; Series = 'NCv2'; RetireDate = '2023-09-06'; Status = 'Retired' } @{ Pattern = '^Standard_NC\d+r?s_v3$'; Series = 'NCv3'; RetireDate = '2025-09-30'; Status = 'Retired' } @{ Pattern = '^Standard_ND\d+r?s$'; Series = 'NDv1'; RetireDate = '2023-09-06'; Status = 'Retired' } @{ Pattern = '^Standard_NV\d+$'; Series = 'NVv1'; RetireDate = '2023-09-06'; Status = 'Retired' } # Scheduled for retirement (announced, planned retirement date) @{ Pattern = '^Standard_DS?\d+$'; Series = 'Dv1'; RetireDate = '2028-05-01'; Status = 'Retiring' } @{ Pattern = '^Standard_DS?\d+_v2(_Promo)?$'; Series = 'Dv2'; RetireDate = '2028-05-01'; Status = 'Retiring' } @{ Pattern = '^(Basic_A\d+|Standard_A\d+)$'; Series = 'Av1'; RetireDate = '2028-11-15'; Status = 'Retiring' } @{ Pattern = '^Standard_B\d+[a-z]*$'; Series = 'Bv1'; RetireDate = '2028-11-15'; Status = 'Retiring' } @{ Pattern = '^Standard_GS?\d+$'; Series = 'G/GS'; RetireDate = '2028-11-15'; Status = 'Retiring' } @{ Pattern = '^Standard_F\d+s?$'; Series = 'Fsv1'; RetireDate = '2028-11-15'; Status = 'Retiring' } @{ Pattern = '^Standard_L\d+s$'; Series = 'Lsv1'; RetireDate = '2028-05-01'; Status = 'Retiring' } @{ Pattern = '^Standard_L\d+s_v2$'; Series = 'Lsv2'; RetireDate = '2028-11-15'; Status = 'Retiring' } @{ Pattern = '^Standard_ND\d+r?s_v2$'; Series = 'NDv2'; RetireDate = '2025-09-30'; Status = 'Retiring' } @{ Pattern = '^Standard_NV\d+s_v3$'; Series = 'NVv3'; RetireDate = '2026-09-30'; Status = 'Retiring' } @{ Pattern = '^Standard_M\d+(-\d+)?[a-z]*$'; Series = 'Mv1'; RetireDate = '2027-08-31'; Status = 'Retiring' } ) foreach ($entry in $retirementLookup) { if ($SkuName -match $entry.Pattern) { return $entry } } return $null } |