如何用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
相关产品推荐
相关产品推荐

