Настройка JSON объекта в качестве переменной в linux скрипте Powershell - PullRequest
0 голосов
/ 25 февраля 2020

В настоящее время я отправляю в моей подсказке список переменных значения ключа из осьминога в мой проект. Они читаются и устанавливаются в моем окружении с помощью приведенного ниже кода.

$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 для обработки конфигурация службы как JSON объект, а не строка? Это вообще возможно?

1 Ответ

1 голос
/ 25 февраля 2020

Я не уверен, что вы предоставили достаточно информации для полного решения вашей проблемы. Одна возможность, если значение начинается с '[', затем обрабатывается как 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
...