Skip to content

Warn on deprecated/scheduled-for-deprecation marketplace images in New-AzVM and New-AzVmss#29312

Draft
Copilot wants to merge 2 commits intomainfrom
copilot/warn-on-deprecated-images
Draft

Warn on deprecated/scheduled-for-deprecation marketplace images in New-AzVM and New-AzVmss#29312
Copilot wants to merge 2 commits intomainfrom
copilot/warn-on-deprecated-images

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 24, 2026

Azure marketplace images can be marked as Deprecated or ScheduledForDeprecation, but users receive no feedback at VM/VMSS creation time. This adds non-blocking warnings when a specified marketplace image is in either state.

Changes

Core

  • ImageAndOsType: Added ImageDeprecationStatus property to propagate deprecation info through image resolution
  • ImageEx.UpdateImageAndOsTypeAsync: Populates ImageDeprecationStatus from VirtualMachineImages.GetAsync response when resolving publisher:offer:sku:version format images

New-AzVM

  • SimpleParameterSet: Calls WarnIfImageDeprecated() in Parameters.CreateConfigAsync after image resolution via UpdateImageAndOsTypeAsync
  • DefaultParameterSet: Calls CheckAndWarnMarketplaceImageDeprecation() in DefaultExecuteCmdlet before creation; reuses existing retrieveSpecificImageFromNotId() for the API call

New-AzVmss

  • SimpleParameterSet (Manual): Calls WarnIfImageDeprecated() after UpdateImageAndOsTypeAsync in both SimpleParameterSetNormalMode and SimpleParameterSetOrchestrationModeFlexible
  • DefaultParameterSet (Generated): Adds CheckAndWarnMarketplaceImageDeprecation() called from BuildVirtualMachineScaleSetParameters; reuses existing retrieveSpecificImageFromNotId()

Warning messages

State Message
Deprecated This image is deprecated. VM created from this image might not be supported and VM creation might be blocked in the near future. Please select the latest image that is supported instead.
ScheduledForDeprecation This image is scheduled for deprecation. VM created from this image might not be supported in the near future. Please consider selecting the latest supported image instead.

All deprecation checks are wrapped in try/catch — failures silently no-op so VM/VMSS creation is never blocked by the check itself.

Example

# Using a deprecated WS2022 image
New-AzVM -Name "myvm" -Credential $cred -Image "MicrosoftWindowsServer:WindowsServer:2022-datacenter:20348.2762.250306"

# WARNING: This image is deprecated. VM created from this image might not be supported
# and VM creation might be blocked in the near future. Please select the latest image
# that is supported instead.
# (VM creation proceeds normally)

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • 1n8vsblobprodwus2184.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • 40vvsblobprodwus2135.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • 6yfvsblobprodwus2121.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • 7q7vsblobprodwus2144.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • 84hvsblobprodwus2148.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • 8wdvsblobprodwus2137.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • 9yyvsblobprodwus2157.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • b53vsblobprodwus2154.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • ba0vsblobprodwus2130.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • balvsblobprodwus2129.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • cbvvsblobprodwus2131.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • cffvsblobprodwus218.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • d94vsblobprodwus2119.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • ezcvsblobprodwus2170.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • faxvsblobprodwus2122.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • g3xvsblobprodwus2151.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • i01vsblobprodwus216.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • isvvsblobprodwus2147.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • jhgvsblobprodwus2167.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • k4pvsblobprodwus2140.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • ldhvsblobprodwus2153.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • mt2vsblobprodwus2110.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • nudvsblobprodwus214.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • p2tvsblobprodwus2189.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • s8nvsblobprodwus2158.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • tn2vsblobprodwus2124.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • wlnvsblobprodwus2188.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • wztvsblobprodwus2155.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • y5lvsblobprodwus2179.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj owner --uid-owner 0 -j ACCEPT Compute.Managemefind Compute.Manageme/home/REDACTED/work/azure-powershell/azure-powershell/tools Compute.Manageme-name Compute.Manageme*.cs Comp�� Compute.Management.Sdk/Generated/Models/DataDiskImage.cs Compute.Management.Sdk/Generated/Models/GalleryInVMAccessControlProfilesCreateOrUpdateHeaders.cs-w Compute.Management.Sdk/Generated/Models/VirtualMachineScaleSetSkuCapacity.cs Compute.Managemeiptables Compute.Manageme-w Compute.Manageme-t Compute.Managemesecurity (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)
  • yf8vsblobprodwus212.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj ell (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>PS: Throw Warning when user tries to deploy VM/VMSS using a deprecating image</issue_title>
<issue_description>Background:
Azure marketplace allows publishers to publish VM images to accelerate VM deployments at scale, however many images are not deleted after deprecated. These deprecated images incurs additional capacity cost to Azure, and causes security/compliance risks for user who still use them.
Today, image can only be deleted after the usage is dropped to certain thresholds. To accelerate the deletion of the deprecated images, we need to keep user away from using deprecated images.

Timeline:
Due to .net 6 deprecation, Windows server team is deprecating all WS 2022 images from marketplace, with this large scale image deprecation of VM usage, we need to make sure the deprecation is executed in a timely manner, so1P and 3P services can move away from the deprecated WS 2022 images before they reaches EOL. The deprecation will be kicked off on June 9th 2026, this feature should be released before that deadline.

Describe the solution you'd like
When "vm/vmss create" is executed, if the image user selects is already marked for deprecation, we need to throw a warning, asking user not to use the deprecating images due to security and compliance risk.
"Warning, this image is marked for deprecation, VM created from this image might not be supported in the near future, VM creation might be blocked, please select the latest image that is supported instead".

Describe alternatives you've considered
Today, during the image deprecation, we send email to user to notify the deprecation, however this is not effective, user often ignore the notifications.

Additional context
For Windows server 2022 image deprecation, see https://techcommunity.microsoft.com/blog/azurecompute/breaking-change-for-window-server-2022-image-users/4262423 Since this is a large scale image deprecation (impacting all WS 2022 marketplace image users), we are asking this feature to be implemented ASAP, ideally released by June 2026.

Related feature: Feature 34692513 [Br]: Remove deprecating image from the recent used OS image list in VM/VMSS creating portal UI

How to check for ImageDeprecationStatus: ImageState is Deprecated (Virtual Machine Images - Get - REST API (Azure Compute) | Microsoft Learn)

Note I have created a same request to CLI: Azure/azure-cli#32314 too.</issue_description>

Comments on the Issue (you are @copilot in this section)

Custom agent used: Compute PowerShell Pull Request Agent
Specialized agent for creating PowerShell pull requests based on a design request

  • Fixes Azure/azure-powershell-cmdlet-review-pr#1542

✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

@azure-client-tools-bot-prd
Copy link
Copy Markdown

Thanks for your contribution! The pull request validation has started. Please revisit this comment for updated status.

Copilot AI changed the title [WIP] Throw warning when user tries to deploy VM/VMSS using deprecated image Warn on deprecated/scheduled-for-deprecation marketplace images in New-AzVM and New-AzVmss Mar 24, 2026
Copilot AI requested a review from audreyttt March 24, 2026 15:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants