Bob*_*byS 1 api powershell json azure-devops
我正在尝试从 powershell 运行以下 API“Patch”命令,我希望在 Azure DevOps 中执行发布...
$deploy = Invoke-RestMethod -Uri $patchurl -Method Patch -Body $body -Headers $header -ContentType "application/json-patch+json"
Run Code Online (Sandbox Code Playgroud)
网址示例如下
https://vsrm.dev.azure.com/test/Fixed%20Income/_apis/Release/releases/567/environments/1072?api-version=6.0-preview.6
Run Code Online (Sandbox Code Playgroud)
补丁调用的主体是...
"Status": "inProgress",
"scheduledDeploymentTime": null,
"comment": null,
"variables": {}
Run Code Online (Sandbox Code Playgroud)
从 powershell 运行调用命令会返回以下响应...
Invoke-RestMethod : {"$id":"1","innerException":null,"message":"TF400898: 发生内部错误。活动 ID: 759888ab-9828-4cb6-ba2f-e90cde1cd39a。","typeName" :“System.Web.Http.HttpResponseException,System.Web.Http”,“typeKey”:“HttpResponseException”,“errorCode”:0,“eventId”:0}
当我运行相同的 url 来运行来自 Postman 的“补丁”请求时,我收到以下响应,这正是我期望从 Powershell 获得的响应。
“$id”:“1”,“innerException”:null,“message”:“TF400813:用户''无权访问此资源。”,“typeName”:“Microsoft.TeamFoundation.Framework.Server.UnauthorizedRequestException ,Microsoft.TeamFoundation.Framework.Server”,“typeKey”:“UnauthorizedRequestException”,“errorCode”:0,“eventId”:3000
有什么想法我做错了吗?
根据您的描述,当您从Postman调用此REST API时,响应返回错误:“message”:“TF400813:用户”无权访问此资源。”此问题的原因是授权不正确。
请先在组织中创建一个新的个人访问令牌,然后在授权选项卡中选择类型: Basic Auth,并在右侧的密码输入框中输入您的PAT。

当您从 powershell 调用此 REST API 时,响应会返回错误:“TF400898:发生内部错误。活动 ID:759888ab-9828-4cb6-ba2f-e90cde1cd39a。” 出现此问题的原因是Content-Type不正确。
请使用 ContentType " application/json " 而不是 ContentType "application/json-patch+json" 。
Script template:
$token = "PAT"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$url3="https://vsrm.dev.azure.com/{organization}/{project}/_apis/Release/releases/{releaseId}/environments/{environmentId}?api-version=6.0-preview.6"
$body = "{
`"status`": `"inProgress`",
`"scheduledDeploymentTime`": null,
`"comment`": null,
`"variables`": {}
}"
$response3 = Invoke-RestMethod -Uri $url3 -Headers @{Authorization = "Basic $token"} -Method Patch -Body $body -ContentType application/json
Run Code Online (Sandbox Code Playgroud)
请参考以下步骤创建 PAT:


| 归档时间: |
|
| 查看次数: |
6740 次 |
| 最近记录: |