You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行Azure CLI恢复防火墙诊断设置时遭遇JSON解析失败

Azure CLI恢复防火墙诊断设置JSON解析错误问题

问题现象

运行Azure CLI命令恢复防火墙诊断设置时,触发Failed to parse string as JSON错误。

操作步骤与结果

  1. 通过PowerShell命令生成Metrics的JSON配置:

    $metrics = ($fwDiagnostics.metrics) | ConvertTo-Json -Compress
    

    生成的JSON格式正常:

    {"category":"AllMetrics","enabled":true,"retentionPolicy":{"days":90,"enabled":false},"timeGrain":null}
    
  2. 执行Azure CLI诊断设置创建命令:

    az monitor diagnostic-settings create --name $fwDiagnostics.name --metrics $metrics --workspace $fwDiagnostics.workspaceId --resource $resource.id
    
  3. 出现错误提示,可见传入的JSON丢失了双引号:

    Failed to parse string as JSON: {category:AllMetrics,enabled:true,retentionPolicy:{days:90,enabled:false},timeGrain:null} Error detail: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
    

问题原因

PowerShell在将$metrics变量传递给Azure CLI时,会自动解析字符串中的双引号,导致最终传入CLI的JSON丢失了必要的双引号,不符合JSON格式规范。

解决方法

方法一:通过文件传递JSON参数(推荐)

将生成的JSON写入临时文件,再通过Azure CLI的@file语法读取参数:

# 将JSON写入临时文件
$metrics | Out-File -Path .\temp_metrics.json -Encoding UTF8

# 执行CLI命令,从文件读取metrics参数
az monitor diagnostic-settings create --name $fwDiagnostics.name --metrics @temp_metrics.json --workspace $fwDiagnostics.workspaceId --resource $resource.id

# 可选:删除临时文件
Remove-Item .\temp_metrics.json

方法二:转义双引号传递变量

在PowerShell中,将$metrics变量用额外的双引号包裹并转义,避免PowerShell解析内部双引号:

az monitor diagnostic-settings create --name $fwDiagnostics.name --metrics "`"$metrics`"" --workspace $fwDiagnostics.workspaceId --resource $resource.id

方法三:使用--%阻止PowerShell参数解析

--%是PowerShell的停止解析符号,后面的参数直接传递给Azure CLI,但注意此方法下PowerShell变量不会自动展开,需提前替换变量值:

# 提前获取变量值
$settingName = $fwDiagnostics.name
$workspaceId = $fwDiagnostics.workspaceId
$resourceId = $resource.id

# 执行CLI命令
az monitor diagnostic-settings create --% --name $settingName --metrics $metrics --workspace $workspaceId --resource $resourceId

内容的提问来源于stack exchange,提问作者Raymondo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 04:53:11