Настройка объекта 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
Другие вопросы по тегам