VSTS - 用于向发布环境添加变量的 Powershell 脚本不起作用

VSTS - Powershell script to add variable to release environment not working

我在带有环境的 VSTS 中有一个发布定义,在环境中我有一些变量,我希望能够不时添加一个或另一个新变量,但我需要这样做在其他系统中也会创建一些东西的进程中自动运行。

所以我需要使用 powershell 来实现。 我有以下脚本,它没有任何错误,发布定义已更新,但未插入变量。

$ProjectUrl = "http://mytfsserver/tfs/myproject"
$DefinitionId = 7
$EnvironmentId = 11
$VariableName = "newvar"
$value = "newval"
$Comment = "Updated by PS script"

$ProjectUrl = $ProjectUrl.TrimEnd("/")

$url = "$($ProjectUrl)/_apis/release/definitions/$($DefinitionId)?expand=Environments?api-version=3.0-preview"
$definition = Invoke-RestMethod $url -UseDefaultCredentials

$environment = $definition.environments.Where{$_.id -eq $EnvironmentId}

if($environment)
{
    $environment.variables | Add-Member -Name $VariableName -MemberType NoteProperty -Value $value
}
else
{
    Write-Warning "Environment not found in the given release"
}

$definition.source = "restApi"

if ($Comment)
{
    $definition | Add-Member -Name "comment" -MemberType NoteProperty -Value $Comment
}

$body = $definition | ConvertTo-Json -Depth 100 -Compress

$body = [Text.Encoding]::UTF8.GetBytes($body)

$putUrl = "$($ProjectUrl)/_apis/release/definitions?api-version=3.0-preview"

Invoke-RestMethod $putUrl -Method Put -Body $body -ContentType 'application/json' -UseDefaultCredentials -Verbose -Debug

任何人都可以帮助我了解缺少的内容或错误的内容吗?

已解决。 $value 没有被正确格式化。它应该是这样的:$value = @{value=$value}