我在使用 Powershell 腳本來獲取、遞增并將新值放入 DevOps 變陣列中的變數時遇到問題。
在 $json 物件字串中添加變數似乎存在問題。不知道如何將增量值添加到字串中,請指教!
劇本:
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "","$env:SYSTEM_ACCESSTOKEN")))
$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/distributedtask/variablegroups/1?api-version=6.0-preview.1"
$pipeline = Invoke-RestMethod -Uri $url -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
Write-Host "Get Variable Value:" $pipeline.variables.MinorVersion.value
$versionNumber = [int]$pipeline.variables.MinorVersion.value
$versionNumber
Write-Host "$versionNumber Variable Value:" $versionNumber
$json = '{"id":2555,"type":"Vsts","name":"VersionNumberVG","variables":{"MinorVersion":{"value":$versionNumber}}}'
$pipeline = Invoke-RestMethod -Uri $url -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
Write-Host "PUT New Variable Value:" $pipeline.variables.MinorVersion.value
$pipeline = Invoke-RestMethod -Uri $url -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
Write-Host "Get Variable Value:" $pipeline.variables.MinorVersion.value
我得到的錯誤:
Invoke-RestMethod : {"$id":"1","innerException":null,"message":"TF400898: An Internal Error Occurred. Activity Id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx.","typeName":"Newtonsoft.Jso
n.JsonReaderException, Newtonsoft.Json","typeKey":"JsonReaderException","errorCode":0,"eventId":0}
At line:13 char:13
$pipeline = Invoke-RestMethod -Uri $url -Method Put -Body $json -Cont ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
uj5u.com熱心網友回復:
問題的原因是正文格式有問題。
您可以嘗試以下 PowerShell 示例來定義主體并運行 Rest API:
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "","$env:SYSTEM_ACCESSTOKEN")))
$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/distributedtask/variablegroups/1?api-version=6.0-preview.1"
$pipeline = Invoke-RestMethod -Uri $url -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
Write-Host "Get Variable Value:" $pipeline.variables.MinorVersion.value
$versionNumber = [int]$pipeline.variables.MinorVersion.value
$versionNumber
Write-Host "$versionNumber Variable Value:" $versionNumber
$json =
"{
`"name`":`"VersionNumberVG`",
`"type`":`"Vsts`",
`"variables`":{
`"MinorVersion`":{
`"isSecret`":false,
`"value`": `"$versionNumber`"
}
}
}"
$pipeline = Invoke-RestMethod -Uri $url -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
Write-Host "PUT New Variable Value:" $pipeline.variables.MinorVersion.value
$pipeline = Invoke-RestMethod -Uri $url -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
Write-Host "Get Variable Value:" $pipeline.variables.MinorVersion.value
結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/532939.html
