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

如何用PowerShell脚本获取Azure DevOps手动审批任务的审批人姓名

获取Azure DevOps发布流水线ManualValidation任务的审批人PowerShell脚本

你之前用构建时间线API找不到审批人是正常的,因为ManualValidation@0的审批记录存在发布审批历史里,不属于构建时间线数据范畴。直接调用发布审批相关的REST API就能拿到审批人信息,以下是完整的PowerShell实现:


核心脚本实现

# 配置参数
$orgName = "你的组织名"
$projectName = "你的项目名"
$releaseDefinitionId = "你的发布流水线ID" # 可在流水线详情页URL中获取
$patToken = "你的PAT令牌" # 需要拥有Release Read权限

# 转换PAT为Base64格式用于认证
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$patToken"))

# 1. 获取目标流水线的最新发布记录(已知具体发布ID可跳过此步骤)
$releasesUrl = "https://vsrm.dev.azure.com/$orgName/$projectName/_apis/release/releases?definitionId=$releaseDefinitionId&`$top=1&api-version=7.1-preview.8"
$latestRelease = Invoke-RestMethod -Uri $releasesUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method Get
$releaseId = $latestRelease.value[0].id

# 2. 获取该发布的所有审批历史
$approvalsUrl = "https://vsrm.dev.azure.com/$orgName/$projectName/_apis/release/approvals?releaseId=$releaseId&api-version=7.1-preview.3"
$approvals = Invoke-RestMethod -Uri $approvalsUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method Get

# 3. 筛选ManualValidation对应的审批记录并提取审批人
$manualValidationApprovals = $approvals.value | Where-Object {
    $_.approvalType -eq "preDeployment" -and $_.releaseEnvironment.name -match "你的ManualValidation任务所在环境名" # 多环境场景下可通过环境名精准筛选
}

foreach ($approval in $manualValidationApprovals) {
    switch ($approval.status) {
        "approved" {
            Write-Host "ManualValidation任务审批人:$($approval.approver.displayName)(邮箱:$($approval.approver.uniqueName))"
        }
        "rejected" {
            Write-Host "ManualValidation任务被拒绝,操作人:$($approval.approver.displayName)"
        }
        "pending" {
            Write-Host "ManualValidation任务待审批"
        }
    }
}

关键说明

  • PAT权限要求:确保你的PAT拥有Release模块下的Read权限,否则会返回403权限错误。
  • 筛选条件调整:
    • approvalType:ManualValidation任务默认是预部署审批,对应值为preDeployment;若为部署后验证则是postDeployment,可根据实际场景修改。
    • 多环境流水线中,通过releaseEnvironment.name指定环境名,能精准定位目标ManualValidation任务的审批记录。
  • 状态扩展:脚本处理了approved、rejected、pending三种常见状态,可根据需求添加其他状态逻辑。

已知发布ID的简化操作

如果已经明确目标发布的ID,可直接跳过获取最新发布的步骤,将$releaseId替换为已知值即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:12:12