无法在 PowerShell 中使用 REST API 删除 DevOps 分支

Posted

技术标签:

【中文标题】无法在 PowerShell 中使用 REST API 删除 DevOps 分支【英文标题】:Unable to delete DevOps branch using REST API in PowerShell 【发布时间】:2022-01-11 11:34:07 【问题描述】:

我正在尝试按照链接中的步骤删除 Azure DevOps 分支。 https://docs.microsoft.com/en-us/rest/api/azure/devops/git/refs/update-refs?view=azure-devops-rest-4.1

注意:分支没有任何关联的策略/锁。

我可以在 postman 中测试 API 及其成功。但是,相同的 API 在 PowerShell 中不起作用。

我正在尝试上传列为“Branchname”、“OldObjectId”的 csv 文件。

错误: 远程服务器返回错误:(400) Bad 请求

    $FileData = Get-Content $filePath | Select -skip 1 | ConvertFrom-Csv -Header  "BranchName","objectId"

     ## Processing Each Row of Excel Data
$FileData | ForEach-Object 
    Write-Output " Deleting branch:$($_.BranchName)"

   ##Assigning "0000000000000000000000000000000000000000" to newObjectId makes branch to delete.
    $body = @
       oldObjectId =$($_.objectId)
        newObjectId = "0000000000000000000000000000000000000000"
       name = $($_.BranchName)
     
    $json= ConvertTo-Json @( $body ) -Depth 100
    Write-Output $DeleteBranche_BaseURL
    Write-Output $json

    ##Innvoking REST API  to delete stale branch
    $ADO_ADODeleteBranchesResponse = Invoke-RestMethod  -Uri $DeleteBranche_BaseURL  -Method POST -Headers $AzureDevOpsAuthenicationHeader  -Body $json -ErrorAction Ignore
    Write-Output #ADO_ADODeleteBranchesResponse
  

【问题讨论】:

【参考方案1】:

您可以检查您的请求内容类型吗?我在相同的请求中使用-ContentType "application/json"

Invoke-RestMethod -Uri $PostUrl -Method Post -ContentType "application/json" -Headers @Authorization=("Basic 0" -f $base64AuthInfo)  -Body $body

【讨论】:

我犯了这么大的错误。 :(

以上是关于无法在 PowerShell 中使用 REST API 删除 DevOps 分支的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 REST API 在 PowerShell 中获取 TFS 构建报告 [重复]

在PowerShell中序列化REST响应

VSTS API REST无法正确下载源

powershell 使用REST-API的PowerShell V3 Multipart / formdata示例(Invoke-RestMethod)

powershell 使用REST-API的PowerShell V3 Multipart / formdata示例(Invoke-RestMethod)

powershell REST API PowerShell函数列表