通过PowerShell调用Azure DevOps API创建工作项报401错误如何解决
Azure DevOps 本地TFS API调用401未授权报错排查方案
以下是按优先级排序的排查步骤:
1. 个人访问令牌(PAT)校验
- 检查PAT有效期:确认你生成的PAT未超出设置的有效时间,过期PAT会直接触发401错误
- 检查PAT权限范围:创建工作项需要PAT至少开启工作项(Work Items)写入权限,同时确认PAT是绑定到你请求的
collection集合级别,而非更小的团队项目范围 - 检查账号权限:PAT所属的账号必须拥有目标团队项目的工作项创建权限,权限不足也会返回401
2. 身份认证逻辑校验
- 本地部署TFS的Basic认证规则为
任意字符串:PAT,你当前的编码逻辑是正确的,可以临时添加一行Write-Host $base64AuthInfo确认编码结果无异常 - 如果你当前登录的Windows账号本身就有TFS访问权限,可以尝试用集成认证测试:去掉
Invoke-RestMethod的Headers参数,添加-UseDefaultCredentials参数,直接用当前账号权限发起请求,验证是否是PAT的问题
3. 请求地址校验
- 确认
baseurl中的集合名称collection和你的实际TFS集合名称完全一致,拼写错误会触发权限类报错 - 确认API版本和TFS版本适配:TFS 2019对应api-version为5.0,如果你使用的是更低版本的TFS(如TFS 2018对应4.1版本),需要修改
api-version参数为适配的版本号
4. 请求体格式修正
你当前的JSON请求体存在语法错误,部分服务端会将格式错误的请求拦截后伪装返回401,避免暴露内部逻辑。需要修改CreateJsonBody函数中System.Title的赋值行,给变量$title加上双引号保证JSON格式合法:
{ "op": "add", "path": "/fields/System.Title", "value": "$title" }
内容的提问来源于stack exchange,提问作者Ankit
相关产品推荐
相关产品推荐

