Scripts/Set-AzAppServiceSetting.ps1

param(
    [Parameter(Mandatory = $true)][string] $ResourceGroupName = $(throw "Resource group name is required"),
    [Parameter(Mandatory = $true)][string] $AppServiceName = $(throw "App Service name is required"),
    [Parameter(Mandatory = $true)][string] $AppServiceSettingName = $(throw "App Service setting name is required"),
    [Parameter(Mandatory = $true)][string] $AppServiceSettingValue = $(throw "App Service value is required"),
    [Parameter(Mandatory = $false)][switch] $PrintSettingValuesIfVerbose = $false
)

Write-Host "Checking if the App Service with name '$AppServiceName' can be found in the resource group '$ResourceGroupName'"
$appService = Get-AzWebApp -ResourceGroupName $ResourceGroupName -Name $AppServiceName -ErrorAction Ignore

if ($appService -eq $null) {
    throw "No App Service with name '$AppServiceName' could be found in the resource group '$ResourceGroupName'"
}

Write-Host "Azure App service has been found for name '$AppServiceName' in the resource group '$ResourceGroupName'"
Write-Host "Extracting the existing application settings from Azure App Service"
$appServiceSettings = $appService.SiteConfig.AppSettings

$existingSettings = @{ }
Write-Verbose "Existing Azure App Service application settings:"
foreach ($setting in $appServiceSettings) {
    $existingSettings[$setting.Name] = $setting.value
    if ($PrintSettingValuesIfVerbose) {
        Write-Verbose "$($setting.Name): $($setting.Value)"
    } else {
        Write-Verbose "$($setting.Name)"
    }
}

$existingSettings[$AppServiceSettingName] = $AppServiceSettingValue

Write-Host "Setting the application setting '$AppServiceSettingName'"
try 
{
    $updatedAppService = Set-AzWebApp -ResourceGroupName $ResourceGroupName -Name $appServiceName -AppSettings $existingSettings

    Write-Verbose "Updated Azure App Service settings:"
    foreach ($setting in $updatedAppService.SiteConfig.AppSettings) {
        if ($PrintSettingValuesIfVerbose) {
            Write-Verbose "$($setting.Name): $($setting.Value)"
        } else {
            Write-Verbose "$($setting.Name)"
        }
    }
} catch {
    throw "The Azure App Service settings could not be updated. Details: $($_.Exception.Message)"
}

Write-Host "Successfully set the application setting '$AppServiceSettingName' of the Azure App Service '$AppServiceName' within Azure resource group '$ResourceGroupName'"