You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过az devops CLI或API查询含内联PowerShell任务的ADO流水线与发布?

用Azure DevOps CLI/API筛选含内联PowerShell任务的流水线与发布

可以通过Azure DevOps CLI结合REST API实现这个需求,以下是具体操作步骤:

一、筛选流水线中的内联PowerShell任务

1. 使用Azure DevOps CLI

首先完成基础配置:

# 登录Azure
az login
# 设置默认组织和项目
az devops configure --defaults organization=https://dev.azure.com/你的组织名 project=你的项目名

获取所有流水线ID

az pipelines list --query "[].id" -o tsv

遍历流水线并筛选内联PowerShell任务

  • YAML流水线:通过az pipelines show获取YAML内容,查找包含powershell任务且使用script:定义内联脚本的条目(而非filePath:引用外部文件):
# 替换为目标流水线ID
PIPELINE_ID=123
az pipelines show --id $PIPELINE_ID --query "process.yaml" | grep -A 5 -B 2 "powershell:"

通过输出可快速定位内联脚本段。

  • 经典流水线:CLI暂不支持直接获取经典流水线的任务详情,需结合REST API实现(见下文API部分)。

2. 使用Azure DevOps REST API

获取所有流水线

发送GET请求:

https://dev.azure.com/{组织名}/{项目名}/_apis/pipelines?api-version=7.1-preview.1

筛选内联PowerShell任务

  • YAML流水线:针对每个流水线ID,调用接口获取YAML内容:
https://dev.azure.com/{组织名}/{项目名}/_apis/pipelines/{流水线ID}/yaml?api-version=7.1-preview.1

解析返回的YAML文本,查找powershell任务块中包含script:字段的条目。

  • 经典流水线:调用构建定义接口获取任务配置:
https://dev.azure.com/{组织名}/{项目名}/_apis/build/definitions/{流水线ID}?api-version=7.1-preview.7

在返回结果的process.phases[].steps数组中,筛选task.type等于PowerShell且inputs.script字段存在(即内联脚本)的任务。

二、筛选发布定义中的内联PowerShell任务

1. 使用Azure DevOps CLI(结合az rest)

CLI无直接操作发布任务的命令,需通过az rest调用REST API:

获取所有发布定义ID

az rest --method get --uri "https://vsrm.dev.azure.com/你的组织名/你的项目名/_apis/release/definitions?api-version=7.1-preview.4" --query "[].id" -o tsv

遍历发布定义并筛选内联PowerShell任务

# 替换为目标发布定义ID
RELEASE_DEF_ID=456
az rest --method get --uri "https://vsrm.dev.azure.com/你的组织名/你的项目名/_apis/release/definitions/$RELEASE_DEF_ID?api-version=7.1-preview.4" --query "environments[].deployPhases[].workflowTasks[] | [?taskType=='PowerShell' && inputs.script]"

该命令会直接输出包含内联脚本的PowerShell任务详情。

2. 使用Azure DevOps REST API

获取所有发布定义

发送GET请求:

https://vsrm.dev.azure.com/{组织名}/{项目名}/_apis/release/definitions?api-version=7.1-preview.4

筛选内联PowerShell任务

针对每个发布定义ID,调用接口获取配置:

https://vsrm.dev.azure.com/{组织名}/{项目名}/_apis/release/definitions/{发布定义ID}?api-version=7.1-preview.4

在返回结果的environments[].deployPhases[].workflowTasks数组中,筛选taskType等于PowerShell且inputs.script不为空的任务。

关键筛选逻辑

无论是流水线还是发布定义,内联PowerShell任务的核心特征是:

  • YAML流水线:使用script:字段直接定义脚本内容,而非filePath:引用外部文件
  • 经典流水线/发布定义:任务的inputs.script字段包含具体脚本代码

找到这些任务后,即可检查是否使用了已终止支持的Azure RM模块,进而替换为Az模块完成适配。

内容的提问来源于stack exchange,提问作者NK94

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 14:37:45