在 linux Powershell 脚本中将 JSON 对象设置为变量
Setting up a JSON object as a variable in a linux Powershell script
我目前正在将键值变量列表从 octopus 发送到我的项目到我的提示中。这些是通过下面的代码在我的环境中读取和设置的。
$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'} ]"
正如您所看到的,当它是一对一的,key = string value 时,这是完美的。问题是对于 serviceConfiguration,我传入了一个 JSON 对象。
我的代码正在获取我需要的值,就像这样
"ServiceConfiguration:MyJSONObjectConfiguration:0"
如何配置我的 PS1 脚本以将 serviceConfiguration 视为 JSON 对象而不是字符串?有可能吗?
我不确定您是否提供了足够的信息来完全解决您的问题。一种可能性是,如果值以 '[' 开头,则视为 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
我目前正在将键值变量列表从 octopus 发送到我的项目到我的提示中。这些是通过下面的代码在我的环境中读取和设置的。
$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'} ]"
正如您所看到的,当它是一对一的,key = string value 时,这是完美的。问题是对于 serviceConfiguration,我传入了一个 JSON 对象。
我的代码正在获取我需要的值,就像这样
"ServiceConfiguration:MyJSONObjectConfiguration:0"
如何配置我的 PS1 脚本以将 serviceConfiguration 视为 JSON 对象而不是字符串?有可能吗?
我不确定您是否提供了足够的信息来完全解决您的问题。一种可能性是,如果值以 '[' 开头,则视为 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