如何无需额外支持库,用curl.exe或PowerShell查询Azure DevOps(TFS)
无需额外库访问Azure DevOps REST API(curl/PowerShell)
前置准备
先创建Azure DevOps的个人访问令牌(PAT),令牌权限要匹配你调用API的需求(比如读取项目就选「项目和团队」的读取权限)。
使用curl.exe访问
认证逻辑
把PAT按 :<你的PAT> 格式(注意前面的冒号)转成Base64编码,请求时在Header里携带 Authorization: Basic <Base64编码后的字符串>。
示例:查询组织下的项目列表
# 简化写法,curl会自动处理PAT的Base64编码 curl -u :<你的PAT> "https://dev.azure.com/<你的组织名>/_apis/projects?api-version=7.1"
或者显式指定Header的写法:
# 先在终端生成Base64编码(Windows环境可执行:echo -n ":你的PAT" | certutil -encode -f - base64.txt,取结果去掉首尾注释行) curl -H "Authorization: Basic <Base64编码的PAT>" "https://dev.azure.com/<你的组织名>/_apis/projects?api-version=7.1"
使用PowerShell访问
方法1:通过PSCredential认证
$pat = "<你的PAT>" $orgName = "<你的组织名>" $credential = New-Object System.Management.Automation.PSCredential("", (ConvertTo-SecureString $pat -AsPlainText -Force)) Invoke-RestMethod -Uri "https://dev.azure.com/$orgName/_apis/projects?api-version=7.1" -Credential $credential
方法2:直接添加Authorization头
$pat = "<你的PAT>" $orgName = "<你的组织名>" $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat")) Invoke-RestMethod -Uri "https://dev.azure.com/$orgName/_apis/projects?api-version=7.1" -Headers @{Authorization = "Basic $base64AuthInfo"}
示例:获取特定项目的单个工作项
$pat = "<你的PAT>" $orgName = "<你的组织名>" $projectName = "<你的项目名>" $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat")) Invoke-RestMethod -Uri "https://dev.azure.com/$orgName/$projectName/_apis/wit/workitems/1?api-version=7.1" -Headers @{Authorization = "Basic $base64AuthInfo"}
内容的提问来源于stack exchange,提问作者zumalifeguard
相关产品推荐
相关产品推荐

