Настройка объекта JSON в качестве переменной в сценарии Linux Powershell
В настоящее время я отправляю список переменных ключевого значения из осьминога в свой проект в мое приглашение. Они читаются и устанавливаются в моей среде с помощью приведенного ниже кода.
$testKeys = $OctopusParameters.keys | Where-Object {$_ -like "test.env.*"}
ForEach ($key in $testKeys)
{
$value = $OctopusParameters[$key]
$name = $key.subString(9) # remove test.env prefix
$kubectlArgs += "--env=`"$name=$value`""
}
Это возвращается следующим образом:
> --env="ASPNETCORE_ENVIRONMENT=integration"
> --env="ConnectionStrings__MongoDB=my mongo connectgion string"
> --env="ServiceConfiguration__MyJSONObjectConfiguration=[ {'MyID': 23, 'URL': 'http://google.com/', 'User': 'MyUser',
> 'Password': 'test', 'Domain': 'MyDomain', 'Key': 'myKey'} ]"
Итак, как вы можете видеть, это отлично работает, когда это один к одному, ключ = строковое значение. Проблема в том, что для serviceConfiguration я передаю объект JSON.
Мой код получает нужные мне значения, вот так
"ServiceConfiguration:MyJSONObjectConfiguration:0"
Как мне настроить сценарий PS1 для обработки serviceConfiguration как объекта JSON, а не строки? Это вообще возможно?
1 ответ
Я не уверен, что вы предоставили достаточно информации, чтобы полностью решить вашу проблему. Один из возможных вариантов: если значение начинается с символа "[", то рассматривать его как JSON и использоватьCovertFrom-Json
.
Что-то типа:
"[ {'MyID': 23, 'URL': 'http://google.com/', 'User': 'MyUser', 'Password': 'test', 'Domain': 'MyDomain', 'Key': 'myKey'} ]" | ConvertFrom-Json
Что дает объект вроде:
MyID : 23
URL : http://google.com/
User : MyUser
Password : test
Domain : MyDomain
Key : myKey