Skip to content

Conversation

Copy link

Copilot AI commented Dec 3, 2025

Description

Adds -DiskIOPSReadWrite and -DiskMBpsReadWrite parameters to Add-AzVMDataDisk cmdlet, enabling customers to set IOPS and bandwidth during implicit disk creation for UltraSSD or Premium V2 data disks on VMs.

Changes:

  • Created SDK customization (DataDisk.cs) to expose writable DiskIOPSReadWrite/DiskMBpsReadWrite properties
  • Added DiskIOPSReadWrite (Int64) and DiskMBpsReadWrite (Int64) parameters to VmManagedDiskParameterSet
  • Added PremiumV2_LRS to StorageAccountType argument completer
  • Updated help documentation with new parameters and usage example
  • Added test case Test-VirtualMachineDataDiskIOPSMBPS

Usage:

Add-AzVMDataDisk -VM $vm -Name 'UltraData1' -Lun 0 -CreateOption Empty -DiskSizeInGB 10 -Caching None -StorageAccountType UltraSSD_LRS -DiskIOPSReadWrite 1000 -DiskMBpsReadWrite 100

Resolves: Azure#27377

Mandatory Checklist

  • SHOULD update ChangeLog.md file(s) appropriately
    • Update src/{{SERVICE}}/{{SERVICE}}/ChangeLog.md.
      • A snippet outlining the change(s) made in the PR should be written under the ## Upcoming Release header in the past tense.
    • Should not change ChangeLog.md if no new release is required, such as fixing test case only.
  • SHOULD regenerate markdown help files if there is cmdlet API change. Instruction
  • SHOULD have proper test coverage for changes in pull request.
  • SHOULD NOT adjust version of module manually in pull request

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 /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • 6yfvsblobprodwus2121.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • 7t8vsblobprodwus2168.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • 84hvsblobprodwus2148.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • 8wdvsblobprodwus2137.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • 9yyvsblobprodwus2157.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • b53vsblobprodwus2154.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • ba0vsblobprodwus2130.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • balvsblobprodwus2129.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • cbvvsblobprodwus2131.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • cffvsblobprodwus218.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • d94vsblobprodwus2119.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/tools/VersionController/VersionController.Netcore.csproj -c Debug (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • ezcvsblobprodwus2170.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • faxvsblobprodwus2122.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • g3xvsblobprodwus2151.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • i01vsblobprodwus216.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • isvvsblobprodwus2147.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • jhgvsblobprodwus2167.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • k4pvsblobprodwus2140.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • kafvsblobprodwus2165.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/tools/VersionController/VersionController.Netcore.csproj -c Debug (dns block)
  • ldhvsblobprodwus2153.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • mt2vsblobprodwus2110.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • nudvsblobprodwus214.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • p2tvsblobprodwus2189.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • tn2vsblobprodwus2124.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • wlnvsblobprodwus2188.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/tools/VersionController/VersionController.Netcore.csproj -c Debug (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • x0dvsblobprodwus2111.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • y5lvsblobprodwus2179.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • yf8vsblobprodwus212.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet /usr/bin/dotnet build /home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Azure.PowerShell.sln -c Debug -fl /flp1:logFile=/home/REDACTED/work/azure-powershell/azure-powershell/artifacts/Build.log;verbosity=quiet (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (dns block)
  • zd2vsblobprodwus2156.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet build Compute.sln --configuration Debug (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>Az.Compute- Disk IOPS/MBPS Support for SI VMs</issue_title>
<issue_description>

Guidelines

The purpose of the Azure PowerShell design review is to ensure that the cmdlets follow the same pattern across the Azure modules. An early design review reduces the risk of unnecessary implementation changes caused by a cmdlet syntax design change.

Please ensure your cmdlets comply with the design guidelines outlined in the PowerShell Design Guidelines document.

Please generate cmdlets syntax using GenerateCmdletDesignMarkdown.ps1 for review if your cmdlet is generated from API spec directly by Autorest.PowerShell.

If you just add parameter to existing cmdlets and parameter definition complies with guideline, the design review is not expected.

  • Have you read above statement?

    • { Yes }

Service Release Details

  • Is this an Embargoed Preview, A Public Preview, or a General Release?

    • { GA }
  • What is the expected service release date?

    • {Q1 2026 }
  • Which Powershell module are these changes being made in?

    • {Az.Compute }

Contact Information

  • Main developer contacts (emails + github aliases)

    • { yaminibansal@microsoft.com, linugeorge@microsoft.com }
  • PM contact (email + github alias)

    • { ryandraper@microsoft.com }
  • Other people who should attend a design review (email)

    • { ppusuluri@microsoft.com }

High Level Scenarios

  • Describe how your feature is intended to be used by customers.

    • { Customers will be able to set the values of DiskIOPSReadWrite and DiskMBPSReadWrite parameters while implicit disk creation of UltraSSD or Premium V2 data disks for SI VMs }
  • Piping scenarios / how these cmdlets are used with existing cmdlets

    • { These are existing cmdlets and the new feature parameter will not change the piping scenarios }
  • Sample of end-to-end usage

    • Please provide comprehensive examples that don't assume additional setup. It helps the audience understand your feature.

    • `{ Scenario: Setting values of IOPS/MBPS while implicit disk creation

Add-AzVMDataDisk -VM $vm -Name 'UltraData1' -Lun 0 -CreateOption Empty -DiskSizeGB 10 -Caching None -StorageAccountType UltraSSD_LRS -DiskIOPSReadWrite 100 -DiskMBpsReadWrite 1
``
}`

Syntax changes

Indicate if you are requesting an edit to existing cmdlets, adding new cmdlets, or both. Then edit the corresponding section below.

- { Existing }

Changed cmdlet

List the names of the cmdlets that are being edited.

- { Add-AzVMDataDisk }

List the new parameters for the cmdlet, the parameter types, and their allowed values if applicable.

- { -DiskIOPSReadWrite Type: Int64
- -DiskMBpsReadWrite Type: Int64 }

Please describe the new business logic of the cmdlet and parameters here.

- {  It allows to set the values of DiskIOPSReadWrite and DiskMBPSReadWrite parameters while implicit disk creation of UltraSSD or Premium V2 data disks for SI VMs}

Link to diff between markdown help files, or sample syntax as above.

- { CHANGED CMDLETS HERE }

Indicate which parameter sets on the cmdlet are affected by this change.

- { INPUT HERE }

Specific test cases

Please provide a link to the API tests that exist for this feature.

  • { ENTER LINK HERE }

Additional information

For example:
    - New parameter A can only be used when old parameter B is set to value C. 
    - This feature requires the subscription to be on the 'allowlist' for X feature. 
- { INPUT HERE }

</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#1531

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

…aDisk cmdlet

Co-authored-by: haagha <64601174+haagha@users.noreply.github.com>
Copilot AI changed the title [WIP] Add Disk IOPS and MBPS support for SI VMs Add DiskIOPSReadWrite and DiskMBpsReadWrite parameters to Add-AzVMDataDisk Dec 3, 2025
Copilot AI requested a review from haagha December 3, 2025 17:19
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