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

如何通过PowerShell/Bash脚本将JSON配置导入Azure WebApp应用设置

Azure WebApp/Functions 配置自动同步脚本方案

前置要求

  • 已完成Azure账号身份验证:PowerShell环境执行Connect-AzAccount登录,Bash环境执行az login登录
  • 已切换到对应资源所在的Azure订阅
  • 配置文件为标准键值对格式JSON,示例如下:
{
  "DatabaseConnection": "your_connection_string",
  "Api_Key": "your_api_key",
  "WEBJOBS_IDLE_TIMEOUT": "300",
  "FUNCTIONS_WORKER_RUNTIME": "dotnet"
}

PowerShell 实现脚本

额外依赖

需提前安装Azure PowerShell Az模块:Install-Module -Name Az -AllowClobber -Scope CurrentUser

脚本内容

# 自定义参数配置
$resourceGroup = "替换为实际资源组名称"
$targetWebAppName = "替换为目标WebApp/Functions应用名称"
$jsonConfigPath = "替换为本地JSON配置文件完整路径"

# 读取本地JSON配置
$configHash = Get-Content $jsonConfigPath | ConvertFrom-Json -AsHashtable

# 获取目标应用现有配置,避免覆盖未在JSON中定义的配置项
$existingApp = Get-AzWebApp -ResourceGroupName $resourceGroup -Name $targetWebAppName
$mergedSettings = @{}
foreach ($item in $existingApp.SiteConfig.AppSettings) {
    $mergedSettings[$item.Name] = $item.Value
}

# 合并JSON配置,重名键以JSON中定义的值为准
foreach ($key in $configHash.Keys) {
    $mergedSettings[$key] = $configHash[$key]
}

# 格式转换后提交更新
$settingsArray = $mergedSettings.GetEnumerator() | ForEach-Object { @{Name = $_.Key; Value = $_.Value } }
Set-AzWebApp -ResourceGroupName $resourceGroup -Name $targetWebAppName -AppSettings $settingsArray

Write-Host "✅ 配置已成功同步到目标应用"

Bash 实现脚本

额外依赖

  • 已安装Azure CLI
  • 已安装JSON解析工具jq:多数Linux发行版可直接通过apt install jq/yum install jq安装,macOS可通过brew install jq安装

脚本内容

#!/bin/bash
# 自定义参数配置
RESOURCE_GROUP="替换为实际资源组名称"
TARGET_WEBAPP="替换为目标WebApp/Functions应用名称"
JSON_CONFIG_PATH="替换为本地JSON配置文件路径"

# 解析JSON生成配置参数
CONFIG_PAIRS=$(jq -r 'to_entries|map("\(.key)=\(.value|@sh)")|join(" ")' "$JSON_CONFIG_PATH")

# 提交配置更新,自动合并现有配置,重名键以JSON值为准
az webapp config appsettings set \
  --resource-group "$RESOURCE_GROUP" \
  --name "$TARGET_WEBAPP" \
  --settings $CONFIG_PAIRS > /dev/null

echo "✅ 配置已成功同步到目标应用"

补充说明

  • 脚本同时适用于WebApp和Functions应用,两类资源的应用设置管理接口完全一致
  • WebJobs的相关配置本身存储在所属WebApp的应用设置中,无需额外调整脚本即可同步
  • 若不需要保留原有配置,直接全量覆盖为JSON中的配置项,删除PowerShell中读取合并现有配置的逻辑即可,Bash脚本可额外添加--no-inherit参数实现全量覆盖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:45:04