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

使用Set-AzWebApp PowerShell cmdlet无法更新Azure App Service的AppSettings

原始提问

这看起来是一项相当简单的任务,我见过大量其他用户采用类似方式实现该需求的示例,但该方案在我这边始终无法生效,我的脚本内容如下:

$webapp = Get-AzWebApp -Name $webappname -ResourceGroupName $resourcegroupName
$appset = $webapp.SiteConfig.AppSettings
$appset


$newsettings = new-object Microsoft.Azure.Management.WebSites.Models.NameValuePair
$newsettings.Name = "keyName"
$newsettings.Value = "MyValue"
   
$appset.Add($newsettings)
   
$newappset = @{}
$appset | ForEach-Object {
    $newappset[$_.Name] = $_.Value
}

Set-AzWebApp -ResourceGroupName $resourcegroupName -Name $webappname  -AppSettings $newappset
$webapp = Get-AzWebApp -Name $webappname -ResourceGroupName $resourcegroupName

Write-Output "New AppSettings:"
$webapp.SiteConfig.AppSettings

执行脚本前后输出的配置完全一致,我在Azure门户中查看也没有发现任何配置变更,同时执行过程没有返回任何报错。请问有人能看出这段脚本存在什么问题吗?


问题解答

核心问题原因

  • 从Get-AzWebApp返回结果中获取的SiteConfig.AppSettings是只读强类型集合,旧版Az.Websites模块下调用Add()方法会静默失败,新配置项并未实际写入集合,后续生成的$newappset哈希表自然不包含新增键值对,因此提交配置时不会有变更,也不会抛出报错。
  • 额外构造NameValuePair对象的步骤冗余,增加了类型兼容风险,直接操作哈希表即可实现需求。

修正后可用脚本

# 读取现有WebApp配置
$webapp = Get-AzWebApp -Name $webappname -ResourceGroupName $resourcegroupName

# 将现有配置直接转为哈希表
$appSettingsHash = @{}
foreach ($setting in $webapp.SiteConfig.AppSettings) {
    $appSettingsHash[$setting.Name] = $setting.Value
}

# 直接在哈希表中新增/修改配置
$appSettingsHash["keyName"] = "MyValue"

# 提交配置变更
Set-AzWebApp -ResourceGroupName $resourcegroupName -Name $webappname -AppSettings $appSettingsHash

# 验证配置结果
$updatedWebApp = Get-AzWebApp -Name $webappname -ResourceGroupName $resourcegroupName
Write-Output "New AppSettings:"
$updatedWebApp.SiteConfig.AppSettings

注意事项

  • 执行前请确保本地安装的Az.Websites模块为最新版本,避免旧版本存在参数兼容问题
  • 若WebApp配置了部署插槽,需额外添加-Slot参数指定对应插槽,否则默认仅修改生产插槽配置
  • Set-AzWebApp的-AppSettings参数为全量覆盖现有配置,不要直接传入仅包含新增项的哈希表,否则会删除所有原有配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 14:45:03