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

Azure DevOps Pipeline创建Bug的PowerShell任务报错:页面未找到

解决Azure Pipeline中创建Bug时的“页面未找到”错误

1. 修复API URL中的工作项类型占位符

你的URL里的$bug是未定义的PowerShell变量,但Azure DevOps创建Bug的API要求URL中使用固定的$Bug(注意大写)作为工作项类型标识,这是API路径的固定部分而非变量。如果$bug未赋值,会导致URL缺失关键片段,直接触发404错误。

修正后的URL:

$uri = "https://dev.azure.com/Abc/Def/_apis/wit/workitems/$Bug?api-version=6.1-preview.3"

2. 修正PAT的Basic认证格式

Basic认证要求将用户名:PAT转换为Base64编码(用户名可留空),你当前直接使用原始PAT的方式不符合认证规范,会导致请求被拒绝或解析异常。

修正认证头:

$pat = "U2hyayuty43f4y32tfytf23ytf"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat"))
$headers = @{
  "Authorization" = "Basic $base64AuthInfo"
  "Content-Type" = "application/json-patch+json"
}

3. 移除多余的ConvertTo-Json转换

你的$defectPayload已经是合法的JSON Patch格式数组,再次使用ConvertTo-Json会将其转义为字符串,导致API无法解析请求体,进而引发错误。

修正请求调用:

Invoke-RestMethod -Uri $uri -Headers $headers -Method Post -Body $defectPayload

完整修正后的代码

# 设置用于创建新工作项的REST API URL
$uri = "https://dev.azure.com/Abc/Def/_apis/wit/workitems/$Bug?api-version=6.1-preview.3" 
echo $uri

# 设置用于认证的个人访问令牌(PAT)
$pat = "U2hyayuty43f4y32tfytf23ytf"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat"))
$headers = @{
  "Authorization" = "Basic $base64AuthInfo"
  "Content-Type" = "application/json-patch+json"
}

# 构建新缺陷工作项的JSON请求体
$defectPayload = @"
[
 {
  "op": "add",
  "path": "/fields/System.Title",
  "from": null,
  "value": "Test of REST functionality"
 },
 {
  "op": "add",
  "path": "/fields/System.State",
  "from": null,
  "value": "New"
 }
 ]
"@

# 创建新缺陷工作项
Invoke-RestMethod -Uri $uri -Headers $headers -Method Post -Body $defectPayload

额外检查项

  • 确保Pipeline使用的PAT拥有**Work Items (Write)**权限,且作用域覆盖目标项目
  • 验证Abc(组织名)和Def(项目名)是否与实际环境完全匹配,注意Azure DevOps的名称区分大小写

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:37:01