Ожидается имя свойства, заключенное в двойные кавычки, при передаче строки JSON в CLI Azure (из PowerShell) - PullRequest
0 голосов
/ 23 марта 2020

Чтобы создать параметры диагностики c на 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).

Я попытался безуспешно

  • изменился с многострочного строкового литерала на одну строку (что вызвало еще одну ошибку)
  • заменено ' на "

1 Ответ

1 голос
/ 23 марта 2020

Добавление параметра --debug к Azure CLI показало, что одиночные кавычки исключаются в процессе преобразования аргумента, который, кажется, вызывает ошибку:

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("'",'\"')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...