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}
我在带有环境的 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}