ConvertFrom-Json无法在Azure Powershell中工作

hmtdttj4  于 12个月前  发布在  Shell
关注(0)|答案(1)|浏览(78)

所以我有这个powershell脚本:

$rawJsonData = az appconfig kv list --connection-string $env:APP_CONFIG_CONNECTION_STRING --fields key value

$keyValuePairs = $rawJsonData | ConvertFrom-Json

字符串
这在我的本地powershell上运行得很好,但是当我在我的Azure应用服务的Docker容器上运行它时(通过Kudu ssh),我得到以下错误:
第一个月
下面是我得到的结构的一个例子:

[
  {
    "key": "any_key",
    "value": "any_value"
  },
  {
    "key": "any_key",
    "value": "any_value"
  }
]


我已经验证了我在我的本地和在azure powershell中接收到的对象是完全相同的。我还验证了无论键值字段如何都会发生这种情况(如果我只指定一个或另一个)。
在azure方面,它似乎不喜欢我的对象中存在的下划线字符“_”,但如果它在我的本地powershell上工作,我会发现这很奇怪。
我试过先用.ToString()把它转换成字符串我也试过附加--output json我试过Get-Content -Raw...我试过Invoke-WebRequest...

vqlkdk9b

vqlkdk9b1#

好了,伙计们,我找到问题了。似乎当我在Azure powershell环境中运行上面的代码时,它返回Hyper-v文本,然后是json,所以我的实际输出是:

_Hyper-v_text
{good_json_data}

字符串
解决的方法是将json数据导出到一个临时文件(app_js.json),然后将其读回:

# Create key/value pair dictionary JSON file from app config
az appconfig kv export -d file --path ./app_config.json --format json --skip-features --yes --connection-string $env:APP_CONFIG_CONNECTION_STRING
# Object with key-value pairs from app config
$keyValuePairs = (Get-Content -Path ./app_config.json -Raw) | ConvertFrom-Json

相关问题