获取要使用PowerShell交换的Azure Web应用程序设置的列表

时间:2018-08-03 11:12:36

标签: powershell azure swap azure-web-app-service

当我们通过天蓝色门户执行交换时,它会向我们提供有关要交换的设置的警告和信息性消息。就像下面的图片一样:enter image description here

我的问题是,有什么办法可以通过PowerShell代码获取这些消息列表(关于设置)?

我尝试使用Google搜索,但是找不到任何方法。

1 个答案:

答案 0 :(得分:0)

直接的解决方案是使用Invoke-RestMethod请求在门户中捕获的API。问题在于这是一个非公开AP I,我们不知道它是否已更改。

您可以使用PowerShell来交换两个对象,获取它们的appSettingsConnectionStrings并进行比较。 以下是参考脚本。

当Source和Destination不同时,脚本可以获取:
•添加到目标
•要从“目标”中删除的目标
•交换

$rsgName = "xxxxx"
$appName = "xxxxx"
$slotName = "xxxxxx"

$destination = Get-AzureRmWebApp -ResourceGroupName $rsgName -Name $appName
$destinationAppSettings = $destination.SiteConfig.AppSettings
$destinationConnectionStrings  = $destination.SiteConfig.ConnectionStrings

$source = Get-AzureRmWebAppSlot -ResourceGroupName $rsgName -Name $appName -Slot $slotName
$sourceAppSettings = $source.SiteConfig.AppSettings
$sourceConnectionStrings = $source.SiteConfig.ConnectionStrings

#Get slot configurations
$slotConfigure = Get-AzureRmWebAppSlotConfigName -ResourceGroupName $rsgName -Name $appName

$toBeAdded = New-Object System.Collections.ArrayList
$toBeSwapped = New-Object System.Collections.ArrayList
$toBeDeleted = New-Object System.Collections.ArrayList

foreach($appSetting in $sourceAppSettings){
    if(-not $slotConfigure.AppSettingNames.Contains($sourceAppSettings.Name)){
        $flag = $true
        foreach($_appSetting in $destinationAppSettings){
            if($_appSetting.Name -eq $appSetting.Name){
                $flag = $false
                [void]$toBeSwapped.Add([pscustomobject]@{Name = $appSetting.Name; Source = $appSetting.Value; Destination = $_appSetting.Value})
            }
        }
        if($flag){
            [void]$toBeAdded.Add($appSetting)
        }
    }
}

foreach($appSetting in $destinationAppSettings){
    $flag = $true
    foreach($_appSetting in $sourceAppSettings){
        if($_appSetting.Name -eq $appSetting.Name){
            $flag = $false
        }
    }
    if($flag){
        [void]$toBeDeleted.Add($appSetting)
    }
}


# AppSettings
# To be added to destination
$toBeAdded 

# To be swapped to destination
$toBeSwapped 

# To be delete in destination
$toBeDeleted 


$toBeAdded = New-Object System.Collections.ArrayList
$toBeSwapped = New-Object System.Collections.ArrayList
$toBeDeleted = New-Object System.Collections.ArrayList

foreach($connectionString in $sourceConnectionStrings){
    if(-not $slotConfigure.ConnectionStringNames.Contains($connectionString.Name)){
        $flag = $true
        foreach($_connectionString in $destinationConnectionStrings){
            if($_connectionString.Name -eq $connectionString.Name){
                $flag = $false
                [void]$toBeSwapped.Add([pscustomobject]@{Name = $connectionString.Name; Source = $connectionString.Value; Destination = $_connectionString.Value})
            }
        }
        if($flag){
            [void]$toBeAdded.Add($connectionString)
        }
    }
}

foreach($connectionString in $destinationConnectionStrings){
    $flag = $true
    foreach($_connectionString in $sourceConnectionStrings){
        if($_connectionString.Name -eq $connectionString.Name){
            $flag = $false
        }
    }
    if($flag){
        [void]$toBeDeleted.Add($connectionString)
    }
}


# ConnectionStrings
# To be added to destination
$toBeAdded 

# To be swapped to destination
$toBeSwapped 

# To be delete in destination
$toBeDeleted

希望它对您有帮助。