将 JSON 字符串传递给 Azure CLI(从 PowerShell)时,期望 属性 名称用双引号引起来
Expecting property name enclosed in double quotes when passing JSON string to Azure CLI (from PowerShell)
要在 Azure 防火墙上创建诊断设置,我想传递日志和指标设置。
我在 2 个变量中定义它们,然后将它们传递到 Azure CLI:
$logsSetting = "[{'category': 'AzureFirewallApplicationRule','enabled': true,'retentionPolicy': {'days': 0,'enabled': false}},{'category': 'AzureFirewallNetworkRule','enabled': true,'retentionPolicy': {'days': 0,'enabled': false}}]"
$metricsSetting = "[{'category': 'AllMetrics','enabled': true,'retentionPolicy': {'days': 0,'enabled': false},'timeGrain': null}]"
az monitor diagnostic-settings create --name $FW_NAME `
--resource $FW_NAME -g $VNET_GROUP --resource-type Microsoft.Network/azureFirewalls `
--resource-group $VNET_GROUP `
--workspace $FW_NAME `
--logs $logsSetting `
--metrics $metricsSetting
执行此操作我得到 Expecting property name enclosed in double quotes: line 1 column 3 (char 2)
。
我试了没成功
- 从多行字符串文字更改为单行(导致另一个错误)
- 将
'
替换为 "
向 Azure CLI 添加 --debug
参数显示,在似乎导致错误的参数转换过程中消除了单引号:
Alias Manager: Transformed args to ['monitor', ... '--logs', '[{category: AzureFirewallApplicationRule,enabled: true,retentionPolicy: {days: 0,enabled: false}},{category: AzureFirewallNetworkRule,enabled: true,retentionPolicy: {days: 0,enabled: false}}]', '--metrics', '[{category: AllMetrics,enabled: true,retentionPolicy: {days: 0,enabled: false},timeGrain: null}]', '--debug']
解决方案:使用 \"
转义引号使其工作:
$logsSetting = "[{'category': 'AzureFirewallApplicationRule','enabled': true,'retentionPolicy': {'days': 0,'enabled': false}},{'category': 'AzureFirewallNetworkRule','enabled': true,'retentionPolicy': {'days': 0,'enabled': false}}]".Replace("'",'\"')
$metricsSetting = "[{'category': 'AllMetrics','enabled': true,'retentionPolicy': {'days': 0,'enabled': false},'timeGrain': null}]".Replace("'",'\"')
要在 Azure 防火墙上创建诊断设置,我想传递日志和指标设置。
我在 2 个变量中定义它们,然后将它们传递到 Azure CLI:
$logsSetting = "[{'category': 'AzureFirewallApplicationRule','enabled': true,'retentionPolicy': {'days': 0,'enabled': false}},{'category': 'AzureFirewallNetworkRule','enabled': true,'retentionPolicy': {'days': 0,'enabled': false}}]"
$metricsSetting = "[{'category': 'AllMetrics','enabled': true,'retentionPolicy': {'days': 0,'enabled': false},'timeGrain': null}]"
az monitor diagnostic-settings create --name $FW_NAME `
--resource $FW_NAME -g $VNET_GROUP --resource-type Microsoft.Network/azureFirewalls `
--resource-group $VNET_GROUP `
--workspace $FW_NAME `
--logs $logsSetting `
--metrics $metricsSetting
执行此操作我得到 Expecting property name enclosed in double quotes: line 1 column 3 (char 2)
。
我试了没成功
- 从多行字符串文字更改为单行(导致另一个错误)
- 将
'
替换为"
向 Azure CLI 添加 --debug
参数显示,在似乎导致错误的参数转换过程中消除了单引号:
Alias Manager: Transformed args to ['monitor', ... '--logs', '[{category: AzureFirewallApplicationRule,enabled: true,retentionPolicy: {days: 0,enabled: false}},{category: AzureFirewallNetworkRule,enabled: true,retentionPolicy: {days: 0,enabled: false}}]', '--metrics', '[{category: AllMetrics,enabled: true,retentionPolicy: {days: 0,enabled: false},timeGrain: null}]', '--debug']
解决方案:使用 \"
转义引号使其工作:
$logsSetting = "[{'category': 'AzureFirewallApplicationRule','enabled': true,'retentionPolicy': {'days': 0,'enabled': false}},{'category': 'AzureFirewallNetworkRule','enabled': true,'retentionPolicy': {'days': 0,'enabled': false}}]".Replace("'",'\"')
$metricsSetting = "[{'category': 'AllMetrics','enabled': true,'retentionPolicy': {'days': 0,'enabled': false},'timeGrain': null}]".Replace("'",'\"')