无法使用 PS cmdlet Set-AzWebApp 更新 Azure 应用服务的 AppSettings

Not able to update AppSettings for Azure App Service using PS cmdlet Set-AzWebApp

这似乎是一项相当简单的任务,而且我还有许多其他示例,其中人们以类似的方式实现了它。但不知何故,这对我不起作用。这是我的脚本。

$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

两者 before/after 都提供相同的配置集,当我在 Azure 门户上查看时没有任何变化。我也没有收到任何错误。 任何人都可以看到脚本有什么问题。

这里似乎是一个已报告的问题。

参考:https://github.com/Azure/azure-powershell/issues/15078

尽管使用的是较旧的 Az 模块 4.2.0,但我还是能够观察到我这边的行为。您可以尝试进一步降级并试一试。

或者作为 解决方法 ,我能够使用管理 API.

来满足我的要求
function update-webappsetting($web,$appsetting)
{
$token = (Get-AzAccessToken).Token 
$url = "https://management.azure.com" + $web.Id + "/config/appsettings?api-version=2020-06-01"
$headers = @{"Content-type"="application/json";"Authorization" = "Bearer $token"}
$body = '{"properties" :' + ($appsetting | ConvertTo-Json)  +  '}'


Invoke-WebRequest -Uri $url -Headers $headers -Body $body -Method PUT
}

调用函数:

update-webappsetting -web $web -appsetting $newappset 

做的事情与 Set-AzWebApp -Name NAME -ResourceGroupName RG -AppSettings SETTING 做的完全一样

添加到@Satya 的响应中,另一个解决方法是传递其他 SiteConfig 属性,如 #15038 中提到的 -HttpLoggingEnabled $true:

Set-AzWebApp -ResourceGroupName $resourcegroupName -Name $webappname -AppSettings $newappset -HttpLoggingEnabled $true

但是,此问题的修复程序现已推出,并作为最新 Az 模块版本 6.0.0 具有 Az.Websites 版本 2.6.0 的一部分提供。我可以确认您的脚本可以与最新的 Az 模块一起正常工作。

请更新您机器上的模块:

Update-Module -Name Az

并重试设置 AppSettings。