Как динамически l oop через пары значений ключей в powershell / azure cli - PullRequest
1 голос
/ 08 марта 2020

Я хотел изменить настройки веб-приложения azure, и я смог сделать это с помощью следующего кода powershell. Как вы можете видеть, есть переменные и их значения, я хочу динамически вызывать переменные и их значения и l oop через него и с помощью команды только один раз. Есть ли способ добиться этого

az webapp config appsettings set -g $resourceGroup -n $webAppName --settings ApplicationInsightsAgent_EXTENSION_VERSION="~2"
az webapp config appsettings set -g $resourceGroup -n $webAppName --settings APPINSIGHTS_PROFILERFEATURE_VERSION="1.0.0" 
az webapp config appsettings set -g $resourceGroup -n $webAppName --settings APPINSIGHTS_SNAPSHOTFEATURE_VERSION="1.0.0"
az webapp config appsettings set -g $resourceGroup -n $webAppName --settings XDT_MicrosoftApplicationInsights_BaseExtensions="disabled"
az webapp config appsettings set -g $resourceGroup -n $webAppName --settings XDT_MicrosoftApplicationInsights_Mode="recommended"
az webapp config appsettings set -g $resourceGroup -n $webAppName --settings DiagnosticServices_EXTENSION_VERSION="~3"
az webapp config appsettings set -g $resourceGroup -n $webAppName --settings SnapshotDebugger_EXTENSION_VERSION="disabled"
az webapp config appsettings set -g $resourceGroup -n $webAppName --settings InstrumentationEngine_EXTENSION_VERSION="disabled"

Ответы [ 2 ]

1 голос
/ 09 марта 2020
  • az CLI принимает несколько пар ключ-значение в качестве аргументов своего параметра --settings.

  • PowerShell позволяет передавать элементы массива как отдельные аргументы во внешнюю программу (например, az CLI).

# Define the settings as an array of key-value pairs 
# as strings in format
#   "<key>=<value"
# Use variable references inside the expandable strings ("...") as needed. 
$settings = 
  "ApplicationInsightsAgent_EXTENSION_VERSION=~2",
  "APPINSIGHTS_PROFILERFEATURE_VERSION=1.0.0",
  "APPINSIGHTS_SNAPSHOTFEATURE_VERSION=1.0.0",
  "XDT_MicrosoftApplicationInsights_BaseExtensions=disabled",
  "XDT_MicrosoftApplicationInsights_Mode=recommended",
  "DiagnosticServices_EXTENSION_VERSION=~3",
  "SnapshotDebugger_EXTENSION_VERSION=disabled",
  "InstrumentationEngine_EXTENSION_VERSION=disabled"

# Pass the array to --settings-names
az webapp config appsettings set -g $resourceGroup -n $webAppName --settings $settings

Caveat : CLI az реализован как az.cmd, то есть командный файл (который вызывает Python), поэтому для передаваемых ему аргументов может потребоваться экранирование для удовлетворения cmd.exe Синтаксические требования.

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

Самый простой способ сделать это с powershell + az cli:

'ApplicationInsightsAgent_EXTENSION_VERSION="~2"',xxx,'InstrumentationEngine_EXTENSION_VERSION="disabled"' | Foreach-Object {
    az webapp config appsettings set -g $resourceGroup -n $webAppName --settings $_
}

Вы также можете добиться того же без powershell с xargs

...