【问题标题】:Handling json string in powershell to execute in bash在powershell中处理json字符串以在bash中执行
【发布时间】:2021-04-03 12:07:19
【问题描述】:

我们正在创建一个脚本来自动化服务,为此我们需要调用一个 rest 服务(来自 Azure CLI 的az rest)。我们在 powershell 中创建了一个对象,该对象被转换为 jason 并传递给 REST 调用。问题是,REST 仅适用于正文开头的单引号,如下图所示:

因为我们使用了两次ConvertTo-Json(一次用于转换,另一次用于转义双引号)我们得到以下字符串,这很好:

"{\"preAuthorizedApplications\":[{\"permissionIds\...":

这里我需要将第一个和最后一个双引号替换为单引号。除了使用替换之外,还有更简单的方法吗?

【问题讨论】:

  • 你的意思是"'{0}'" -f $json.Trim('"') 吗?
  • 这成功了
  • 下面的答案有帮助吗?
  • 嗨@singhh-msft。对不起,我没有回来。不,它没有。由于 pythong 编译器和转义字符地狱问题,在 powershell 中执行 az rest 似乎效果不佳……至少在 json 正文开头不使用单引号的情况下,它对我不起作用。但我是 powershell 的新手……所以我可能做错了什么……
  • 你尝试过同样的脚本吗?

标签: azure powershell azure-powershell


【解决方案1】:

您可以将Out-String 用于您的这个用例:

$json = @"
{
"Url": 'https://google.com'
}
"@
$object = $json | ConvertFrom-Json
$objectString = $object.Url | Out-String

az rest --method GET --uri $objectString


$json1 = @"
{
"web": {"redirectUris": ["https://myapp.com"] }
}
"@

$object = $json1 | ConvertFrom-Json
$webString = $object.web | Out-String

az rest --method PATCH --uri $object.Url --body $webString

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 2014-03-07
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    相关资源
    最近更新 更多