azdoutil 3.2.0
dotnet tool install --global azdoutil --version 3.2.0
dotnet new tool-manifest
dotnet tool install --local azdoutil --version 3.2.0
#tool dotnet:?package=azdoutil&version=3.2.0
nuke :add-package azdoutil --version 3.2.0
azdoutil
A collection of useful Azure DevOps utilities.
Written by Benjamin Day
Pluralsight Author | Microsoft MVP
https://www.benday.com
https://www.honestcheetah.com
info@benday.com
YouTube: https://www.youtube.com/@_benday
📖 New book: Azure Cosmos DB for .NET Developers: From Document Thinking to Production Patterns — It's the book on Cosmos DB for .NET developers! Document modeling with aggregate roots, hierarchical partition keys, request unit economics, Change Feed patterns, and a complete production case study — all in C# and ASP.NET Core.
Got ideas for Azure DevOps utilities you'd like to see? Found a bug? Let us know by submitting an issue https://github.com/benday-inc/azdoutil/issues. Want to contribute? Submit a pull request.
Command Categories
Azure DevOps Utility Configuration - Commands for setting up this tool and connecting to Azure DevOps
Automated Builds - Commands that help with automated builds and automated releases
Flow Metrics - Tools for forecasting project management details using Flow Metrics such as throughput and cycle time.
Want to learn more about how to use Flow Metrics to run your projects? Check out this course:
Predicting the Future, Estimating, and Running Your Projects with Flow Metrics.
Process Templates - Process template customization and administration utilities
Team Project Administration - Tools for creating, editing, and managing Team Projects in Azure DevOps
Test Data - Utilities for populating Azure DevOps Team Projects with test data
Version Control - Tools for creating, converting, managing version control repositories
Work Items - Utilities for editing work items and working with work item queries (WIQL)
Miscellaneous - Miscellaneous commands
Installing
The azdoutil is distributed as a .NET Core Tool via NuGet. To install it go to the command prompt and type
dotnet tool install azdoutil -g
Prerequisites
- You'll need to install .NET Core 8+ from https://dotnet.microsoft.com/
Getting Started
Everything starts with a configuration. After you've installed azdoutil, you'll need to run azdoutil addconfig to add a configuration. A configuration is how you store the URL for your Azure DevOps instance and the personal access token (PAT) for authenticating to that instance.
Configurations are named and you can have as many as you'd like.
Set a Default Configuration
There's one default configuration named (default). If you only work with one Azure DevOps instance, then all you'll need to do is to is run azdoutil addconfig --url {url} --pat {pat} and that will set your default configuration.
Additional Named Configurations
If you want to add additional named configurations, you'll run azdoutil addconfig --config {name} --url {url} --pat {pat}.
Running Commands
Once you've set a default configuration, you can run any azdoutil command without having to specify any additional URL or PAT info.
If you want to run a command against an Azure DevOps instance that is NOT your default, you'll need to supply the --config {name} argument.
Managing Configurations
To add new configuration or modify an existing configuration, use the azdoutil addconfig command. You can list your configurations using the azdoutil listconfig command. To delete a configuration, use the azdoutil removeconfig command.
MCP Server (AI assistant integration)
azdoutil can run as a Model Context Protocol (MCP) server so an AI assistant (GitHub Copilot, Claude, etc.) can answer delivery questions in plain language — "how long does stuff usually take?", "when will these 10 items be done?", "what's stuck?" — by calling azdoutil's flow metrics calculations directly.
Start it with azdoutil mcp-server. Run azdoutil mcp-config to print ready-to-paste setup for Claude Code, Claude Desktop, VS Code, Visual Studio 2022/2026, and Cursor — or run azdoutil mcp-config --install and let it register the server for you at user (per-machine) scope. See the GitHub README for full setup and routing details.
The tools are all read-only:
| Tool | What it answers |
|---|---|
get_typical_delivery_window |
"How long does stuff usually take?" — cycle time percentiles (50th/85th/95th). |
get_throughput |
"How much are we getting done?" — throughput and cycle time over a date range. |
forecast_completion_date |
"When will these N items be done?" — Monte Carlo forecast of weeks needed. |
forecast_items_in_timeframe |
"How much can we get done in N weeks?" — Monte Carlo forecast of item counts. |
get_aging_work |
"What's stuck?" — in-progress items aging beyond the typical delivery window. |
get_project_summary |
"How's the project going?" — combined throughput, delivery window, and aging headlines. |
list_configurations |
The Azure DevOps configurations azdoutil knows about (never returns tokens). |
list_team_projects |
Team projects in the org/collection. |
get_project_info |
Details for one project (id, URL, state, process). |
list_teams |
Teams in a project. |
list_process_templates |
Process templates available in the org. |
get_work_item_types |
Work item types in a project (PBI, Bug, Task, …). |
get_work_item_type_states |
Workflow states for a work item type (New → Done). |
list_work_item_queries |
Saved work item queries in a project. |
run_work_item_query |
Run a saved query by name and return the matching items. |
list_git_repositories |
Git repositories in a project. |
analyze_repository |
Build-readiness analysis of a repo without cloning it. |
discover_cli_commands |
Finds the right azdoutil command line for anything not exposed as a tool. |
Commands
| Category | Command Name | Description |
|---|---|---|
| AzdoUtil Configuration | addconfig | Add or update an Azure DevOps configuration. For example, which server or account plus auth information. |
| AzdoUtil Configuration | listconfig | List an Azure DevOps configuration. For example, which server or account plus auth information. |
| AzdoUtil Configuration | removeconfig | Remove an Azure DevOps configuration. For example, which server or account plus auth information. |
| Builds | exportagentcapabilities | Script out the user-defined capabilities of the build agents to a JSON file so they can be reapplied to a new server with importagentcapabilities. Only agents that have custom capabilities are written. |
| Builds | exportbuilddef | Export build definition |
| Builds | exportreleasedef | Export release definition |
| Builds | find-deployment-group-usages | Read the deployment groups and deployment group agents for one or every team project, then trace which release definitions deploy to each group -- including which target machines each phase's tag filter actually selects. Deployment groups only exist in classic release pipelines, so builds have nothing to scan. |
| Builds | find-nuget-tool-installer | Find the classic build definitions that use the NuGet tool installer task (NuGetToolInstaller) and report which version of the task each step uses and which version of NuGet it installs. |
| Builds | finddemands | Find the build and release definitions that have agent demands, and list the demands each one carries. Demands are the capabilities a definition requires of an agent, so this is the companion to the agent capability commands. Scans both builds and releases unless /builds or /releases is given. |
| Builds | findtaskgroupusages | Find build definitions that reference task groups in a team project. |
| Builds | importagentcapabilities | Reapply the user-defined capabilities from an exportagentcapabilities file onto the agents of the current server, matching agents by name. By default the imported capabilities are merged onto whatever each agent already has; use /replace to overwrite. Use /preview to see what would change without writing anything. |
| Builds | importbuilddef | Import build definition from JSON file |
| Builds | importreleasedef | Import release definition from JSON file |
| Builds | inlinetaskgroup | Inline a task group's steps into a build definition and disable the original task group reference. |
| Builds | listagentcapabilities | List the build agents across all agent pools and the user-defined capabilities each one has. Use /customonly to show only the agents that have custom capabilities. |
| Builds | listagentpools | List agent pools |
| Builds | listbuilddefs | List build definitions |
| Builds | listqueues | List build queues in a team project or team projects |
| Builds | listreleasedefs | List release definitions |
| Builds | listtaskgroups | List task groups in a team project. |
| Builds | repairbuilddefagentpool | Repairs the agent pool setting for the build definitions in a team project or team projects. This is helpful after an on-prem to cloud migration. |
| Builds | repairreleasedefagentpool | Repairs the agent pool setting for the release definitions in a team project or team projects. This is helpful after an on-prem to cloud migration. |
| Builds | setagentcapabilities | Push a set of user-defined capabilities onto agents without going through the UI. Target a whole pool with /pool, a single agent with /agent, or every agent with /allpools. Supply the capabilities inline with /capabilities:"name=value;name2=value2" and/or from a flat JSON file with /input. Merges by default; use /replace to overwrite and /preview to see the changes first. |
| Builds | update-nuget-tool-installer | Update the NuGet tool installer steps (NuGetToolInstaller) in classic build definitions to a chosen task version and NuGet version, set each step's display name to show the NuGet version, and save the change back to the server. Build definitions that already match are left alone. |
| Flow Metrics | agingwork | Get aging in-progress work items |
| Flow Metrics | cycletimeconfidence | Get item cycle time for 50% and 85% levels. This helps you understand how items typically are delivered. |
| Flow Metrics | forecastdurationforitemcount | Use throughput data to forecast likely number of weeks to get given number of items done using Monte Carlo simulation |
| Flow Metrics | forecastitemsinweeks | Use throughput data to forecast likely number of items done in given number of weeks using Monte Carlo simulation |
| Flow Metrics | forecastworkitem | Use throughput data to forecast when a work item is likely to be done based on the current backlog priority using Monte Carlo simulation |
| Flow Metrics | suggest-sle | Calculate a suggested service level expectation (SLE) based on cycle time |
| Flow Metrics | throughputcycletime | Get cycle time and throughput data for a team project for a date range |
| MCP Server | mcp-config | Show or manage the MCP server registration for an AI client. With no options it prints ready-to-paste configuration; with --install or --uninstall it registers or removes the server at user scope (per-machine) for Claude Code or VS Code. |
| MCP Server | mcp-server | Start a Model Context Protocol (MCP) server over stdio that exposes the flow metrics tools to an AI assistant. The process stays alive until the MCP client disconnects. |
| Miscellaneous | connectiondata | Get information about a connection to Azure DevOps. |
| Process Templates | addrefinementprocess | Creates backlog refinement process template as described at https://www.benday.com/2022/09/29/streamlining-backlog-refinement-with-azure-devops/ |
| Process Templates | changeprocess | Change the process for a Team Project |
| Project Administration | createproject | Create team projects |
| Project Administration | createteam | Creates a new team in an Azure DevOps Team Project. |
| Project Administration | deleteproject | Delete team project |
| Project Administration | export-local-groups | Export the permission grants held by Windows local groups on the app tier machine: the groups, their memberships, and every security namespace ACL that references them, serialized to JSON. Also writes a PowerShell script that recreates the groups and memberships on a new machine, for a server migration where the collection database moves to a new app tier. |
| Project Administration | getproject | Get team project info |
| Project Administration | import-local-groups | Reapply the permission grants from an export-local-groups JSON file on the new server. Each old local group is re-resolved by name under the new app tier machine, and its grants are merged into the same security namespace tokens they came from. Run the generated PowerShell script on the new machine first so the groups exist and the server has synced them. |
| Project Administration | listprocesstemplates | List process templates |
| Project Administration | listprojects | List team projects |
| Project Administration | listteams | Gets list of teams in an Azure DevOps Team Project. |
| Test Data | createfromexcel | Create work items using Excel script |
| Test Data | createfromgenerator | Create work items using random data generator |
| Test Data | createrandomtitles | Create fake work item titles using random data generator without creating any work items. |
| Version Control | analyzeallrepos | Analyzes all Git repositories for build readiness without cloning. |
| Version Control | analyzerepo | Analyzes a Git repository for build readiness without cloning. |
| Version Control | assess-tfvc-migration | Analyzes a TFVC path and reports what a conversion to Git would have to deal with. |
| Version Control | branchhealth | Surveys the branches in a Git repository and reports how much work is in flight. |
| Version Control | creategitrepo | Creates a Git repository in an Azure DevOps Team Project. |
| Version Control | listallgitrepos | Gets list of Git repositories from all Azure DevOps Team Projects. |
| Version Control | listgitrepos | Gets list of Git repositories from an Azure DevOps Team Project. |
| Version Control | tfvc-to-git | Converts a Team Foundation Version Control (TFVC) folder to a Git repository. |
| Version Control | where-tf | Finds the tf command line client, which ships inside Visual Studio and is rarely on the PATH. |
| Work Items | comparewitdfields | Compare work item fields between two work item type definition files. |
| Work Items | copycategory | Copy category type from one category file to another. |
| Work Items | copywitdfield | Copy work item field from one work item type definition to another. |
| Work Items | exportprocesstemplate | Exports the process template configuration for one or more projects. This command only works on Windows and requires witadmin.exe to be installed. |
| Work Items | exportworkitemquery | Export work item query results |
| Work Items | getareas | Gets a list of areas in an Azure DevOps Team Project. |
| Work Items | getfields | Gets a list of work item fields for a work item type in an Azure DevOps Team Project. |
| Work Items | getiterations | Gets a list of iterations in an Azure DevOps Team Project. |
| Work Items | getworkitem | Get work item by id |
| Work Items | getworkitemstates | Gets the list of states for a work item type in an Azure DevOps Team Project. |
| Work Items | getworkitemtypes | Gets a list of work item types in an Azure DevOps Team Project. |
| Work Items | listworkitemqueries | Gets a list of all work item queries in an Azure DevOps Team Project. |
| Work Items | runworkitemquery | Run work item query |
| Work Items | setiteration | Create iteration including start and end date |
| Work Items | setworkitemstate | Set the state value on an existing work item |
| Work Items | showworkitemquery | Show work item query |
AzdoUtil Configuration
addconfig
Add or update an Azure DevOps configuration. For example, which server or account plus auth information.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| config | Optional | String | Name of the configuration |
| pat | Optional | String | PAT for this collection |
| windowsauth | Optional | Boolean | Use windows authentication with the current logged in user |
| url | Required | String | URL for this collection (example: https://dev.azure.com/accountname) |
| maxapiversion | Optional | String | Highest REST api-version to use with this collection (example: 5.0). Only needed for an older server that will not answer the automatic check. |
listconfig
List an Azure DevOps configuration. For example, which server or account plus auth information.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| config | Optional | String | Name of the configuration |
removeconfig
Remove an Azure DevOps configuration. For example, which server or account plus auth information.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| config | Required | String | Name of the configuration |
Builds
exportagentcapabilities
Script out the user-defined capabilities of the build agents to a JSON file so they can be reapplied to a new server with importagentcapabilities. Only agents that have custom capabilities are written.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| pool | Optional | String | Only export agents in this agent pool |
| output | Optional | String | Path to write the JSON file to. If omitted, the JSON is written to the console. |
exportbuilddef
Export build definition
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name |
| name | Required | String | Build definition name |
| xaml | Optional | Boolean | List XAML build definitions |
| showlastruninfo | Optional | Boolean | Show last build run info |
| csv | Optional | Boolean | Output results in CSV format |
| csv-noheader | Optional | Boolean | Do not print the CSV column header info |
| raw | Optional | Boolean | Output raw build definition |
exportreleasedef
Export release definition
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name |
| name | Required | String | Release definition name |
| queueinfo | Optional | Boolean | Only display queue info |
| json | Optional | Boolean | Export to JSON |
find-deployment-group-usages
Read the deployment groups and deployment group agents for one or every team project, then trace which release definitions deploy to each group -- including which target machines each phase's tag filter actually selects. Deployment groups only exist in classic release pipelines, so builds have nothing to scan.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Optional | String | Team project name |
| all | Optional | Boolean | Scan every project in this collection |
| csv | Optional | Boolean | Output one CSV row per release phase to deployment group usage |
| json | Optional | Boolean | Output results as JSON |
find-nuget-tool-installer
Find the classic build definitions that use the NuGet tool installer task (NuGetToolInstaller) and report which version of the task each step uses and which version of NuGet it installs.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Optional | String | Team project name |
| all | Optional | Boolean | Scan every project in this collection |
| csv | Optional | Boolean | Output results in CSV format |
| json | Optional | Boolean | Output results as JSON |
finddemands
Find the build and release definitions that have agent demands, and list the demands each one carries. Demands are the capabilities a definition requires of an agent, so this is the companion to the agent capability commands. Scans both builds and releases unless /builds or /releases is given.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Optional | String | Team project name |
| all | Optional | Boolean | Scan every project in this collection |
| builds | Optional | Boolean | Only scan build definitions |
| releases | Optional | Boolean | Only scan release definitions |
| json | Optional | Boolean | Output results as JSON |
findtaskgroupusages
Find build definitions that reference task groups in a team project.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name |
| taskgroupid | Optional | String | Optional. Filter to only references of this task group id. |
| json | Optional | Boolean | Output results as JSON |
importagentcapabilities
Reapply the user-defined capabilities from an exportagentcapabilities file onto the agents of the current server, matching agents by name. By default the imported capabilities are merged onto whatever each agent already has; use /replace to overwrite. Use /preview to see what would change without writing anything.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| input | Required | String | Path to the JSON file produced by exportagentcapabilities |
| replace | Optional | Boolean | Overwrite each agent's user capabilities instead of merging |
| preview | Optional | Boolean | Preview the changes without writing anything |
importbuilddef
Import build definition from JSON file
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name |
| input | Required | String | Path to JSON file containing build definition |
| cloneid | Optional | Int32 | ID of the definition to clone (optional) |
| clonerev | Optional | Int32 | Revision of the definition to clone (optional) |
importreleasedef
Import release definition from JSON file
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name |
| input | Required | String | Path to JSON file containing release definition |
| cloneid | Optional | Int32 | ID of the definition to clone (optional) |
| clonerev | Optional | Int32 | Revision of the definition to clone (optional) |
inlinetaskgroup
Inline a task group's steps into a build definition and disable the original task group reference.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name |
| name | Required | String | Build definition name |
| taskgroupid | Optional | String | Optional. Inline only this task group id. Default inlines all task groups in the definition. |
| dryrun | Optional | Boolean | Write before/after JSON files locally instead of updating the build definition on the server. |
| exporttopath | Optional | String | Directory for dry-run output files. Default is the current working directory. |
listagentcapabilities
List the build agents across all agent pools and the user-defined capabilities each one has. Use /customonly to show only the agents that have custom capabilities.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| pool | Optional | String | Only look at this agent pool |
| customonly | Optional | Boolean | Only show agents that have user-defined capabilities |
| json | Optional | Boolean | Output as JSON |
listagentpools
List agent pools
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| agents | Optional | Boolean | Get agents in each pool |
| json | Optional | Boolean | Output as JSON |
listbuilddefs
List build definitions
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Optional | String | Team project name |
| all | Optional | Boolean | All builds in all projects in this collection |
| nameonly | Optional | Boolean | Only display the build definition name |
| xaml | Optional | Boolean | List XAML build definitions |
| json | Optional | Boolean | Export to JSON |
listqueues
List build queues in a team project or team projects
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Optional | String | Team project name |
| all | Optional | Boolean | All builds in all projects in this collection |
| json | Optional | Boolean | Output as JSON |
listreleasedefs
List release definitions
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Optional | String | Team project name |
| all | Optional | Boolean | All releases in all projects in this collection |
| json | Optional | Boolean | Export to JSON |
| queueinfo | Optional | Boolean | Only display queue info |
listtaskgroups
List task groups in a team project.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name |
| nameonly | Optional | Boolean | Only display the task group name |
| json | Optional | Boolean | Output results as JSON |
repairbuilddefagentpool
Repairs the agent pool setting for the build definitions in a team project or team projects. This is helpful after an on-prem to cloud migration.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Optional | String | Team project name |
| all | Optional | Boolean | All builds in all projects in this collection |
| PrintJsonOnPreview | Optional | Boolean | Print modified json in preview mode |
| preview | Optional | Boolean | Preview only. Do not update build definitions. |
| buildname | Optional | String | Build definition name filter. This will only apply if the build name contains this value and only if /all is not specified. |
| originalbuildinfofile | Required | String | Build def JSON file from on-prem server. Assumes that pools have been recreated in the cloud using the same name. |
repairreleasedefagentpool
Repairs the agent pool setting for the release definitions in a team project or team projects. This is helpful after an on-prem to cloud migration.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Optional | String | Team project name |
| all | Optional | Boolean | All releases in all projects in this collection |
| PrintJsonOnPreview | Optional | Boolean | Print modified json in preview mode |
| preview | Optional | Boolean | Preview only. Do not update release definitions. |
| originalreleaseinfofile | Required | String | Release def agent pool references JSON file from on-prem server. Assumes that pools have been recreated in the cloud using the same name. |
setagentcapabilities
Push a set of user-defined capabilities onto agents without going through the UI. Target a whole pool with /pool, a single agent with /agent, or every agent with /allpools. Supply the capabilities inline with /capabilities:"name=value;name2=value2" and/or from a flat JSON file with /input. Merges by default; use /replace to overwrite and /preview to see the changes first.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| capabilities | Optional | String | Capabilities as name=value pairs separated by semicolons, e.g. "VisualStudio=2022;SpecialSoftware=true" |
| input | Optional | String | Path to a flat JSON file of name/value capabilities to apply |
| pool | Optional | String | Apply to every agent in this pool |
| agent | Optional | String | Apply to the agent with this name (optionally narrowed by /pool) |
| allpools | Optional | Boolean | Apply to every agent in every pool |
| replace | Optional | Boolean | Overwrite each agent's user capabilities instead of merging |
| preview | Optional | Boolean | Preview the changes without writing anything |
update-nuget-tool-installer
Update the NuGet tool installer steps (NuGetToolInstaller) in classic build definitions to a chosen task version and NuGet version, set each step's display name to show the NuGet version, and save the change back to the server. Build definitions that already match are left alone.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Optional | String | Team project name |
| all | Optional | Boolean | Update build definitions in every project in this collection |
| name | Optional | String | Build definition name. If omitted, every build definition in scope that uses the NuGet tool installer task is considered. |
| nugetversion | Optional | String | Version of NuGet the task should install. Default is '7.9.x'. |
| taskversion | Optional | String | Version spec for the NuGetToolInstaller task itself. Default is '1.*'. |
| dryrun | Optional | Boolean | Write before/after JSON files locally instead of updating the build definitions on the server. |
| exporttopath | Optional | String | Directory for dry-run output files. Default is the current working directory. |
Flow Metrics
agingwork
Get aging in-progress work items
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name |
| teamname | Optional | String | Team name |
cycletimeconfidence
Get item cycle time for 50% and 85% levels. This helps you understand how items typically are delivered.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| numberofdays | Required | Int32 | Number of days of history to compute |
| teamproject | Required | String | Team project name |
| teamname | Optional | String | Team name |
forecastdurationforitemcount
Use throughput data to forecast likely number of weeks to get given number of items done using Monte Carlo simulation
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| numberofdays | Required | Int32 | Number of days of history to compute |
| teamproject | Required | String | Team project name |
| forecastitemcount | Required | Int32 | Number of items to forecast duration for |
| teamname | Optional | String | Team name |
forecastitemsinweeks
Use throughput data to forecast likely number of items done in given number of weeks using Monte Carlo simulation
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| numberofdays | Required | Int32 | Number of days of history to compute |
| teamproject | Required | String | Team project name |
| forecastweeks | Required | Int32 | Number of weeks into the future to forecast |
| teamname | Optional | String | Team name |
forecastworkitem
Use throughput data to forecast when a work item is likely to be done based on the current backlog priority using Monte Carlo simulation
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| numberofdays | Required | Int32 | Number of days of history to compute |
| id | Required | Int32 | Id of the work item to forecast |
| teamname | Optional | String | Team name |
suggest-sle
Calculate a suggested service level expectation (SLE) based on cycle time
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| numberofdays | Required | Int32 | Number of days of history to compute |
| teamproject | Required | String | Team project name |
| teamname | Optional | String | Team name |
| percent | Optional | Int32 | Percentage level to calculate. (For example, 85% of our items complete in X days) |
throughputcycletime
Get cycle time and throughput data for a team project for a date range
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| numberofdays | Required | Int32 | Number of days of history to compute |
| teamproject | Required | String | Team project name |
| teamname | Optional | String | Team name |
MCP Server
mcp-config
Show or manage the MCP server registration for an AI client. With no options it prints ready-to-paste configuration; with --install or --uninstall it registers or removes the server at user scope (per-machine) for Claude Code or VS Code.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| install | Optional | Boolean | Register the MCP server with a client at user (per-machine) scope |
| uninstall | Optional | Boolean | Remove the MCP server registration from a client |
| client | Optional | String | Target client: claude-code (default) or vscode |
| config | Optional | String | azdoutil configuration the server should use by default (sets AZDO_CONFIG_NAME) |
mcp-server
Start a Model Context Protocol (MCP) server over stdio that exposes the flow metrics tools to an AI assistant. The process stays alive until the MCP client disconnects.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|
Miscellaneous
connectiondata
Get information about a connection to Azure DevOps.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
Process Templates
addrefinementprocess
Creates backlog refinement process template as described at https://www.benday.com/2022/09/29/streamlining-backlog-refinement-with-azure-devops/
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| agile | Optional | Boolean | Whether to create an agile backlog refinement process template instead of scrum. |
changeprocess
Change the process for a Team Project
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name |
| processname | Required | String | New process name |
Project Administration
createproject
Create team projects
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name |
| processname | Required | String | Process template name |
createteam
Creates a new team in an Azure DevOps Team Project.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name that contains the team |
| teamname | Required | String | Name of the new team |
| description | Optional | String | Description for the new team |
deleteproject
Delete team project
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name to delete |
| confirm | Optional | Boolean | Confirm delete |
export-local-groups
Export the permission grants held by Windows local groups on the app tier machine: the groups, their memberships, and every security namespace ACL that references them, serialized to JSON. Also writes a PowerShell script that recreates the groups and memberships on a new machine, for a server migration where the collection database moves to a new app tier.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| machine | Required | String | Name of the app tier machine whose local groups should be exported. Grants are matched by the domain part of each Windows identity. |
| output | Optional | String | Path for the export JSON file. Default is 'local-groups-export.json' in the current directory. The PowerShell script is written next to it with a .ps1 extension. |
getproject
Get team project info
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name |
import-local-groups
Reapply the permission grants from an export-local-groups JSON file on the new server. Each old local group is re-resolved by name under the new app tier machine, and its grants are merged into the same security namespace tokens they came from. Run the generated PowerShell script on the new machine first so the groups exist and the server has synced them.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| input | Required | String | Path to the JSON file written by export-local-groups |
| machine | Required | String | Name of the NEW app tier machine. Groups are resolved as MACHINE\GroupName under this name. |
| preview | Optional | Boolean | Resolve the groups and show what would be applied without changing anything |
listprocesstemplates
List process templates
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
listprojects
List team projects
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
listteams
Gets list of teams in an Azure DevOps Team Project.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name that contains the teams |
Test Data
createfromexcel
Create work items using Excel script
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| skipfuturedates | Optional | Boolean | Skip script steps that occur in the future |
| pathtoexcel | Required | String | Path to the Excel script |
| startdate | Required | DateTime | Date for the start of the Excel script |
| teamproject | Required | String | Name of the team project |
| processname | Required | String | Process template name |
| createproject | Required | Boolean | Creates the team project if it doesn't exist |
createfromgenerator
Create work items using random data generator
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| skipfuturedates | Optional | Boolean | Skip script steps that occur in the future |
| numberofsprints | Required | Int32 | Number of sprints to generate |
| teamproject | Optional | String | Name of the team project |
| processname | Required | String | Process template name |
| createproject | Optional | Boolean | Creates the team project if it doesn't exist |
| teamcount | Optional | Int32 | Creates data for multiple teams. This option is only available when creating a new project. |
| alldone | Optional | Boolean | All PBIs in a sprint makes it to done |
| addsessiontag | Optional | Boolean | Add a session tag to work items for debugging purposes |
| output | Optional | String | Save generated script file to disk in this directory. Note the filename will be auto-generated. |
| scriptonly | Optional | Boolean | Creates the excel export script. Requires an arg value for 'output' |
createrandomtitles
Create fake work item titles using random data generator without creating any work items.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
Version Control
analyzeallrepos
Analyzes all Git repositories for build readiness without cloning.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Optional | String | Team project name (if omitted, analyzes all projects) |
| csv | Optional | Boolean | Output results in CSV format |
analyzerepo
Analyzes a Git repository for build readiness without cloning.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Optional | String | Team project name. Read from the origin remote of the current directory's git repository when it is not supplied. |
| reponame | Optional | String | Repository name. Read from the origin remote of the current directory's git repository when it is not supplied. |
| csv | Optional | Boolean | Output results in CSV format |
assess-tfvc-migration
Analyzes a TFVC path and reports what a conversion to Git would have to deal with.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Optional | String | Team project name. Read from the TFVC workspace holding the current directory when it is not supplied. |
| tfvc-path | Optional | String | TFVC path to assess. Defaults to the server path of the current directory when it is inside a workspace, and to $/<teamproject> otherwise. |
| scandepth | Optional | Int32 | How many folder levels below the path to scan for unregistered branches. Defaults to 3. |
| csv | Optional | Boolean | Output the findings as CSV instead of a report |
branchhealth
Surveys the branches in a Git repository and reports how much work is in flight.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Optional | String | Team project name. Read from the origin remote of the current directory's git repository when it is not supplied. |
| reponame | Optional | String | Repository name. Read from the origin remote of the current directory's git repository when it is not supplied. |
| days | Optional | Int32 | How many days count as active. Defaults to 7. The last 30 days are always reported as well. |
| csv | Optional | Boolean | Output one row per branch as CSV instead of a report |
creategitrepo
Creates a Git repository in an Azure DevOps Team Project.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name that contains the git repositories |
| reponame | Required | String | Name of the new git repository |
listallgitrepos
Gets list of Git repositories from all Azure DevOps Team Projects.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| csv | Optional | Boolean | Output results in CSV format |
| showlastcommit | Optional | Boolean | Include last commit info for each repository |
listgitrepos
Gets list of Git repositories from an Azure DevOps Team Project.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name that contains the git repositories |
tfvc-to-git
Converts a Team Foundation Version Control (TFVC) folder to a Git repository.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name that contains the TFVC and Git repositories |
| reponame | Required | String | Name of the new git repository |
| tfvc-path | Required | String | Source TFVC folder to convert |
where-tf
Finds the tf command line client, which ships inside Visual Studio and is rarely on the PATH.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Print only the path of the first copy that was found |
Work Items
comparewitdfields
Compare work item fields between two work item type definition files.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| file1 | Required | String | Path to the source work item type definition file. |
| file2 | Required | String | Path to the source work item type definition file. |
| flip | Optional | Boolean | Reverse the source and target files. |
copycategory
Copy category type from one category file to another.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| file1 | Required | String | Path to the source category definition file. |
| file2 | Required | String | Path to the target category definition file. |
| refname | Required | String | Refname of the category to copy. |
| overwrite | Required | Boolean | Overwrite the target field if it already exists. |
copywitdfield
Copy work item field from one work item type definition to another.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| file1 | Required | String | Path to the source work item type definition file. |
| file2 | Required | String | Path to the target work item type definition file. |
| refname | Required | String | Refname of the field to copy. |
| overwrite | Required | Boolean | Overwrite the target field if it already exists. |
exportprocesstemplate
Exports the process template configuration for one or more projects. This command only works on Windows and requires witadmin.exe to be installed.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Optional | String | Team project name to export. |
| all | Optional | Boolean | Export all projects in the organization or team project collection. |
| exporttopath | Optional | String | Path to export the process template to. If not specified, the current directory is used. |
| witadminpath | Optional | String | Specify path to witadmin.exe if it can't be located automatically. |
exportworkitemquery
Export work item query results
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name to delete |
| queryname | Required | String | Work item query name |
| exporttopath | Required | String | Export to path |
getareas
Gets a list of areas in an Azure DevOps Team Project.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name that contains the iterations |
| verbose | Optional | Boolean | Verbose output |
getfields
Gets a list of work item fields for a work item type in an Azure DevOps Team Project.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name that contains the work item type |
| workitemtypename | Required | String | Name of the work item type |
| filter | Optional | String | Case insensitive string filter for the results. |
getiterations
Gets a list of iterations in an Azure DevOps Team Project.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name that contains the iterations |
| verbose | Optional | Boolean | Verbose output |
getworkitem
Get work item by id
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| id | Required | Int32 | Work item id |
getworkitemstates
Gets the list of states for a work item type in an Azure DevOps Team Project.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name that contains the work item type |
| workitemtypename | Required | String | Name of the work item type |
getworkitemtypes
Gets a list of work item types in an Azure DevOps Team Project.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name that contains the work item types |
| nameonly | Optional | Boolean | Only show the name of the work item types in the results. |
listworkitemqueries
Gets a list of all work item queries in an Azure DevOps Team Project.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name that contains the work item queries |
runworkitemquery
Run work item query
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name containing the qork item query to run |
| queryname | Required | String | Work item query name |
setiteration
Create iteration including start and end date
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project name |
| startdate | Required | DateTime | Iteration start date |
| enddate | Required | DateTime | Iteration end date |
| name | Required | String | Iteration name |
setworkitemstate
Set the state value on an existing work item
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| state | Required | String | Work item state value |
| id | Required | Int32 | Work item id for the work item to be updated |
| date | Optional | DateTime | Iteration end date |
| override | Optional | Boolean | Override non-matching state values and force set the value you want |
showworkitemquery
Show work item query
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| quiet | Optional | Boolean | Quiet mode |
| config | Optional | String | Configuration name to use |
| teamproject | Required | String | Team project that contains the work item query |
| queryname | Required | String | Work item query name |
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.2.0 | 43 | 9/3/2026 |
| 3.1.0 | 84 | 8/31/2026 |
| 3.0.1 | 76 | 8/31/2026 |
| 3.0.0 | 90 | 8/29/2026 |
| 2.23.0 | 105 | 8/15/2026 |
| 2.22.2 | 129 | 7/15/2026 |
| 2.22.0 | 118 | 7/14/2026 |
| 2.21.0 | 162 | 4/30/2026 |
| 2.19.0 | 202 | 3/7/2026 |
| 2.18.1 | 158 | 3/5/2026 |
| 2.18.0 | 154 | 3/4/2026 |
| 2.17.0 | 180 | 2/5/2026 |
| 2.16.1 | 185 | 1/20/2026 |
| 2.14.0 | 298 | 10/20/2025 |
| 2.13.1 | 280 | 10/20/2025 |
| 2.13.0 | 284 | 10/20/2025 |
| 2.12.0 | 336 | 6/23/2025 |
| 2.11.0 | 271 | 3/15/2025 |
| 2.10.0 | 275 | 2/21/2025 |
| 2.9.2 | 281 | 2/12/2025 |
v3.2 - update-nuget-tool-installer now takes --all to update the build definitions in every project in the collection, and its build definition name is optional so an omitted name means every build definition in scope. It now runs the same scan as find-nuget-tool-installer first and only writes the build definitions that are actually out of spec, so a definition already using the requested task version, NuGet version, and step display name is left alone instead of taking a revision for a no-op save;
v3.1 - The tool now negotiates the REST api-version with the server instead of assuming a current one, so commands work against older on-prem servers such as Azure DevOps Server 2019 rather than failing with a 404 or 400. The supported version is discovered from the server and only ever lowered, so behavior against Azure DevOps Services is unchanged; a --maxapiversion option on addconfig pins it for a server that will not answer the automatic check; connectiondata now reports the server version and build, the release it belongs to, and the highest api-version it accepts; Bug fix: export-local-groups resolved identities in batches large enough to overrun the default IIS query string limit, and the resulting failure was silently reported as 'no local groups hold any permission grants' -- batches are now sized by length and a failed lookup is reported; Bug fix: listprojects called the server twice and discarded the error message the server sent back;
v3.0.1 - Bug fix: the commands that scan one team project or all of them (find-nuget-tool-installer, find-deployment-group-usages, finddemands, listbuilddefs, listqueues, listreleasedefs, and the two agent pool repair commands) ignored a missing team project name and called the server without one, which failed with a 404. They now report which argument is missing;
v3.0 - Upgraded to Benday.CommandsFramework v5: arguments are now typed POSIX-style (--name value) and the old /name:value form still works but is deprecated; the tool now returns a real exit code so scripts and pipelines can detect failures; added the 'tui' terminal interface; Added find-nuget-tool-installer and update-nuget-tool-installer to report and standardize NuGet tool installer tasks in classic builds; Added find-deployment-group-usages to trace deployment groups, their tagged target machines, and the release definitions that deploy to them; Added export-local-groups and import-local-groups to migrate permission grants held by Windows local groups on the app tier when a collection moves to a new server;
v2.23 - Added assess-tfvc-migration to report what a TFVC to Git conversion would have to deal with: branches and their activity, folders used as branches without being registered as such, build definitions that pull from TFVC and the workspaces they map, large files and checked-in build output, and solutions that share projects; Added branchhealth to survey the branches of a Git repository; Added where-tf to find the tf command line client; Added additional commands for import/export of agent pool user defined capabilities; Added commands to search for demands in builds and releases;
v2.22 - MCP server; Bug fixes;
v2.21 - Adding commands to help manage classic build task group definitions including a command to inline task groups back into the build;
v2.20 - Modified the listagentpools command to include agent capabilities in its output;
v2.19 - Added refinement process template based on Agile; Added ability to create test data in an Agile-based team project;
v2.18 - Added support for 'gui' command to launch the GUI version of the tool;
v2.17 - Adding command to get list of all repos in a project with optional csv output and optional last commit info;
v2.16 - Work item test data generator now populates either BacklogPriority or StackRank for PBIs and User Stories;
v2.15 - Adding support for .NET 10;
v2.14 - Added import json release definition command;
v2.13 - Re-adding missing import json build def command;
v2.12 - Fixing null reference exception in listreleasedefs; Update package versions; Fix EPPlus licensing change;
v2.11 - Minor bug fixes and improvements;
v2.10 - Changes to to GetWorkItemFieldsCommand to fix a bug, improve formatting of data, and add simple text filtering;
v2.9.2 - Bug fix for bulk export of agent info for releases;
v2.9.1 - Bug fix;
v2.9 - added option to bulk export agent info for all releases in all projects;
v2.8 - added command to export release definition with option to only display queue info;
v2.7 - added command to repair agent pool bindings for build definitions after a cloud migration; added ability to list all build queues for a project;
v2.6 - added support for viewing release definitions in a project and/or collection
v2.5 - added list agent pools command; added support for viewing all builds in a collection; added support for viewing the pool for a build definition;
v2.4 - added support for work item type definition comparison