Azure VM resize: PowerShell lists Dv5 sizes, but Azure Portal only offers Dv4

Sébastien Violet 0 Points de réputation
2026-08-03T10:49:49.3533333+00:00

Hello,

We recently migrated two production Azure virtual machines away from the retiring Bv1 family.

Initially, the VMs were running as:

  • Standard_B2ms
  • Standard_B4ms

Our goal was to move them to a newer supported VM family.

Environment

  • Region: France Central
  • Managed OS disks (one Standard SSD, one Standard HDD/Standard LRS)
  • SCSI disk controller
  • Windows Server virtual machines

What we observed

After stopping and deallocating the VM, we queried the available resize targets using PowerShell:

Get-AzVMSize `
    -ResourceGroupName "<ResourceGroup>" `
    -VMName "<VMName>"

For one VM, PowerShell returned, among others:

Standard_D2ads_v5
Standard_D2ds_v5
Standard_D2d_v5
Standard_D2as_v4
Standard_D2ds_v4

For the other VM, it returned:

Standard_D4ads_v5
Standard_D4ds_v5
Standard_D4d_v5
Standard_D4as_v4

However, when opening VM → Size in the Azure Portal, the v5 sizes were not available.

Only the following sizes appeared:

  • Standard_D2as_v4
  • Standard_D4as_v4

As a precaution, we resized both VMs using the sizes proposed by the Azure Portal:

  • Standard_B2ms → Standard_D2as_v4
  • Standard_B4ms → Standard_D4as_v4

The migration completed successfully and both VMs are running correctly.

Question

Can someone explain why there is a difference between:

  • the sizes returned by Get-AzVMSize, and
  • the sizes displayed by the Azure Portal?

More specifically:

  1. Does Get-AzVMSize return VM sizes that are not actually valid resize targets?
  2. Does the Azure Portal apply additional compatibility or capacity checks that PowerShell does not?
  3. Is this related to:
    • regional capacity,
    • VM generation,
    • disk controller,
    • managed disk type,
    • host cluster,
    • or another compatibility requirement?
    Would you recommend staying on Das_v4, or should we plan another migration to Dads_v5 if possible?

I am trying to understand the reason behind the different behavior rather than forcing the resize through PowerShell.

Thank you in advance for your insights.Hello,

Azure Migrate
Azure Migrate

Hub central des services et outils de migration cloud Azure permettant de découvrir, d’évaluer et de migrer les charges de travail vers le cloud.

0 commentaires Aucun commentaire

3 réponses

Trier par : Plus récent
  1. Sébastien Violet 0 Points de réputation
    2026-08-10T08:32:41.6766667+00:00

    Hi Suchitra,

    Thank you again for the detailed explanation.

    I have now completed the additional checks you suggested.

    First, I re-ran Get-AzVMSize against the VMs in their current configuration, after they had already been resized from Bv1 to Das_v4.

    Current VM sizes are:

    SRV-DC1 -> Standard_D2as_v4 SRV-NIS1 -> Standard_D4as_v4

    Get-AzVMSize still returns the Dadsv5 family for both VMs, including:

    Standard_D2ads_v5 Standard_D4ads_v5

    I also previously checked Get-AzComputeResourceSku for France Central and both target SKUs return an empty Restrictions collection:

    Standard_D2ads_v5 -> No restrictions Standard_D4ads_v5 -> No restrictions

    Finally, I checked the placement configuration of both VMs. Neither VM is associated with:

    • an Availability Zone
    • an Availability Set
    • a Proximity Placement Group

    So at this stage:

    • Get-AzVMSize lists Dadsv5 as available for both current VMs;
    • Get-AzComputeResourceSku reports no subscription restriction;
    • there are no Zone / Availability Set / PPG placement constraints;
    • but the Azure Portal Size blade still does not display Dadsv5.

    Based on your explanation, would you agree that the remaining likely explanation is current Azure capacity / placement availability or an additional portal-side filtering condition?

    Since you confirmed that PowerShell resize is fully supported and validated server-side, would the next reasonable step be to attempt the resize during a maintenance window to:

    SRV-DC1 -> Standard_D2ads_v5 SRV-NIS1 -> Standard_D4ads_v5

    and capture the Azure error / Correlation ID if the platform refuses the allocation?

    I would prefer to confirm this approach before attempting it on production.

    Thank you, SébastienHi Suchitra,

    Thank you again for the detailed explanation.

    I have now completed the additional checks you suggested.

    First, I re-ran Get-AzVMSize against the VMs in their current configuration, after they had already been resized from Bv1 to Das_v4.

    Current VM sizes are:

    SRV-DC1 -> Standard_D2as_v4
    SRV-NIS1 -> Standard_D4as_v4

    Get-AzVMSize still returns the Dadsv5 family for both VMs, including:

    Standard_D2ads_v5
    Standard_D4ads_v5

    I also previously checked Get-AzComputeResourceSku for France Central and both target SKUs return an empty Restrictions collection:

    Standard_D2ads_v5 -> No restrictions
    Standard_D4ads_v5 -> No restrictions

    Finally, I checked the placement configuration of both VMs. Neither VM is associated with:

    • an Availability Zone
    • an Availability Set
    • a Proximity Placement Group

    So at this stage:

    • Get-AzVMSize lists Dadsv5 as available for both current VMs;
    • Get-AzComputeResourceSku reports no subscription restriction;
    • there are no Zone / Availability Set / PPG placement constraints;
    • but the Azure Portal Size blade still does not display Dadsv5.

    Based on your explanation, would you agree that the remaining likely explanation is current Azure capacity / placement availability or an additional portal-side filtering condition?

    Since you confirmed that PowerShell resize is fully supported and validated server-side, would the next reasonable step be to attempt the resize during a maintenance window to:

    SRV-DC1 -> Standard_D2ads_v5
    SRV-NIS1 -> Standard_D4ads_v5

    and capture the Azure error / Correlation ID if the platform refuses the allocation?

    I would prefer to confirm this approach before attempting it on production.

    Thank you,
    Sébastien

    Cette réponse vous a-t-elle été utile?

    0 commentaires Aucun commentaire

  2. Sébastien Violet 0 Points de réputation
    2026-08-06T15:23:51.7066667+00:00

    Hello Suchitra,

    Thank you for your detailed explanation.

    I ran the Get-AzComputeResourceSku check for both target sizes in France Central:

    Get-AzComputeResourceSku -Location "francecentral" |
    Where-Object {
        $_.ResourceType -eq "virtualMachines" -and
        $_.Name -in @(
            "Standard_D2ads_v5",
            "Standard_D4ads_v5"
        )
    } |
    Select-Object Name, Locations, LocationInfo, Restrictions |
    Format-List
    

    The result is:

    Standard_D2ads_v5
    Restrictions: {}
    Standard_D4ads_v5
    Restrictions: {}
    

    I also formatted the result and confirmed:

    Standard_D2ads_v5 – FranceCentral – No restrictions
    Standard_D4ads_v5 – FranceCentral – No restrictions
    

    Therefore, the two SKUs do not appear to be restricted for our subscription or location.

    However, even after fully stopping and deallocating the VMs, the Azure Portal still does not display these v5 sizes in the VM Size blade. The portal only offers the corresponding v4 sizes.

    The current VMs were originally:

    Standard_B2ms
    Standard_B4ms
    

    and both have a local temporary disk.

    We resized them conservatively through the portal to:

    Standard_D2as_v4
    Standard_D4as_v4
    

    Could the portal be filtering out the Dadsv5 sizes because of another compatibility condition, such as:

    • VM generation;
    • disk controller type;
    • temporary disk category;
    • host cluster;
    • or a portal-specific validation rule?

    Since both Get-AzVMSize and Get-AzComputeResourceSku show the v5 sizes as available, would a resize through PowerShell to Standard_D2ads_v5 or Standard_D4ads_v5 now be considered supported?

    We would prefer not to force the resize unless Microsoft confirms that the portal is only failing to display a valid target size.

    Thank you again for your help.

    Kind regards,

    Sébastien

    Cette réponse vous a-t-elle été utile?


  3. Suchitra Suregaunkar 16,780 Points de réputation Personnel externe de Microsoft Corporation Modérateur
    2026-08-05T17:06:59.27+00:00

    Hi Sébastien,

    Get-AzVMSize -ResourceGroupName -VMName returns the sizes supported by the hardware cluster / VM model your VM sits on. It's a compute-level list, and it doesn't validate whether each of those SKUs is actually offered to your subscription in your region and zone. That's why the cmdlet documentation points you to Get-AzComputeResourceSku when you want sizes by subscription or location.

    The portal's VM → Size blade uses the Resource SKUs data instead, which includes per-subscription restrictions. A SKU can be listed as supported by the cluster but still carry a restriction of type Location or Zone with reason code NotAvailableForSubscription — those sizes are filtered out of the blade. In France Central, this is the most common reason a Dv5/Dadsv5 family shows in PowerShell but not in the portal.

    You can confirm it for your own subscription:

    Get-AzComputeResourceSku -Location "francecentral" |
     Where-Object { $_.Name -like "Standard_D2ads_v5" } |
     Select-Object Name, Locations, LocationInfo, Restrictions | Format-List
    
    
    
    
    az vm list-skus --location francecentral --size Standard_D2ads_v5 --all --output table
    

    If Restrictions is empty, the size is available to you and the portal should offer it after a full stop (deallocate). If it returns NotAvailableForSubscription, the SKU is restricted at subscription level and needs to be enabled — that's done through a quota/SKU request (Azure → Service and subscription limits (quotas) → Compute-VM (cores-vCPUs) subscription limit increases), not by forcing the resize.

    On your last question: staying on Das_v4 is perfectly fine. It's a current, fully supported general-purpose family and your VMs are running correctly on it, so there's no urgency. If you'd like the extra price/performance of Dadsv5 later, run the SKU check above first, then deallocate before resizing deallocation is what lets Azure move the VM to a cluster that supports the new size. Note that for Windows VMs you must stay within the same temp-disk category (a size with a local temp disk can only resize to another size with a local temp disk), which is why the d sizes are the right target family for you.

    Reference documentation:

    Thanks,

    Suchitra.

    Cette réponse vous a-t-elle été utile?

    0 commentaires Aucun commentaire

Votre réponse

Les réponses peuvent être marquées comme « Acceptées » par l’auteur(e) de la question et « Recommandées » par les modérateurs, ce qui aide les utilisateurs à savoir que la réponse a résolu le problème de l’auteur(e).