Я сделал релиз в vsts с некоторыми переменными среды.
Одна из этих переменных среды выглядит следующим образом:
#Array
[ { "name":"password", "value":"thisismypassword" }, { ... } ]
Однако я получаю выходной параметр от одного извыпустить задачи, которые возвращают пароль.Поэтому я подумал сделать «тег» и заменить его, когда вернется выходной параметр:
[ { "name":"password", "value":"<Password>" } ]
Когда мой выходной параметр вернется, я могу создать задачу powershell, чтобы заменить «тег» реальным паролем.,Однако для замены это должна быть либо строка, либо допустимый массив powershell.Если я непосредственно использую переменную окружения, она разбивается на первое «:» с сообщением об ошибке (потому что это не законная команда / формат powershell);
#This breaks
$var = $(environment_variable)
Поэтому я подумал преобразовать ее вString, замените его, преобразуйте его обратно в объект json и установите его обратно в переменную окружения:
$Setting = ConvertFrom-Json -InputObject '$(environment_variable)'
$Setting = $Setting -replace "<Password>", "$(Output_Password)"
#Tried both below
$Setting_JSON - ConvertTo-Json -InputObject $Setting
$Setting_JNSON = [Newtonsoft.Json.JsonConvert]::SerializeObject($Setting, [Newtonsoft.Json.Formatting]::None)
Write-Host "##vso[task.setvariable variable=$(environment_variable)]$Setting_JSON"
Однако они создают строку json, которая имеет другой формат, и шаг, который использует эту переменную, непонять;
#Output
["@{name=Password;value=thisisapasswordvalue}"]
#Expected (and needed) Output
[ { "name":"password", "value":"thisisapasswordvalue" } ]