Powershell 脚本中带有 JSON 对象的 Azure Cli 更新变量
Azure Cli update variable with JSON object in powershell script
我正在尝试使用 az cli 从 PowerShell 脚本中更新 Azure 管道组变量。
我有更新变量的命令,但它修改了 json 并删除了所有引号 (")
所以不是从更新变量
{"a": "a"}
到
{"a": "b"}
它更新为 {a: b}
我是运行下面的命令
$json = ConvertTo-Json $a -Compress
Write-Host $json
az pipelines variable-group variable update --group-id 236 --name MyJson --detect true --secret false --value $json
write-host
的输出是
{"a": "b"}
az pipelines variable-group variable update
的输出是
{
"MyJson": {
"isSecret": null,
"value": "{a:b}"
}
}
我做错了什么以及如何在不修改 JSON 的情况下更新它?
所有变量都存储为字符串并且是可变的,当它在双引号中时它已经意味着字符串。所以它删除了里面的所有引号。如果你想让引号也存储为值,那么你需要像这样传输它们:
{\"a\":\"b\"}
或者只用单引号:
'{"a":"b"}'
最后,它看起来像这样:
没有必要将双引号存储为值。所以我不建议你没有任何特殊原因这样做。
所以当@charles 像那样将数据直接传递给命令时起作用时,我们使用的是变量。
虽然我明白这里发生了什么,但仍然认为 az 命令可以更好地处理这个问题。
所以为了让它工作,我必须对字符串进行替换并将所有 "
替换为 \"
这很烦人,但它确实有效,所以我的最终命令如下所示:
$new_json = $json.replace("`"", "\`"")
az pipelines variable-group variable update --group-id $(VarGroupId) --name var_name --detect true --secret false --value $new_json
我正在尝试使用 az cli 从 PowerShell 脚本中更新 Azure 管道组变量。
我有更新变量的命令,但它修改了 json 并删除了所有引号 (")
所以不是从更新变量
{"a": "a"}
到
{"a": "b"}
它更新为 {a: b}
我是运行下面的命令
$json = ConvertTo-Json $a -Compress
Write-Host $json
az pipelines variable-group variable update --group-id 236 --name MyJson --detect true --secret false --value $json
write-host
的输出是
{"a": "b"}
az pipelines variable-group variable update
的输出是
{
"MyJson": {
"isSecret": null,
"value": "{a:b}"
}
}
我做错了什么以及如何在不修改 JSON 的情况下更新它?
所有变量都存储为字符串并且是可变的,当它在双引号中时它已经意味着字符串。所以它删除了里面的所有引号。如果你想让引号也存储为值,那么你需要像这样传输它们:
{\"a\":\"b\"}
或者只用单引号:
'{"a":"b"}'
最后,它看起来像这样:
没有必要将双引号存储为值。所以我不建议你没有任何特殊原因这样做。
所以当@charles 像那样将数据直接传递给命令时起作用时,我们使用的是变量。
虽然我明白这里发生了什么,但仍然认为 az 命令可以更好地处理这个问题。
所以为了让它工作,我必须对字符串进行替换并将所有 "
替换为 \"
这很烦人,但它确实有效,所以我的最终命令如下所示:
$new_json = $json.replace("`"", "\`"")
az pipelines variable-group variable update --group-id $(VarGroupId) --name var_name --detect true --secret false --value $new_json