求助:编写PowerShell脚本获取Azure WebApp指定订阅字段
PowerShell脚本:批量获取Azure WebApp指定配置信息
前置准备
确保已安装Azure PowerShell模块并完成登录:
# 安装Az模块(首次运行) Install-Module -Name Az -AllowClobber -Scope CurrentUser -Force # 登录Azure账号 Connect-AzAccount
完整脚本
# 获取当前订阅下所有WebApp实例 $webApps = Get-AzWebApp # 初始化结果存储数组 $webAppDetails = @() foreach ($app in $webApps) { # 获取关联的应用服务计划 $asp = Get-AzAppServicePlan -ResourceGroupName $app.ResourceGroup -Name $app.ServerFarmId.Split('/')[-1] # 判断自动缩放状态:免费/共享层不支持,其他层检查是否存在自动缩放规则 $isAutoScaled = if ($asp.Sku.Tier -in @('Free', 'Shared')) { $false } else { $scaleRule = Get-AzAutoscaleSetting -ResourceGroupName $asp.ResourceGroup | Where-Object { $_.TargetResourceUri -eq $asp.Id } [bool]$scaleRule } # 获取专用终结点信息 $privateEndpoints = Get-AzPrivateEndpoint -ResourceGroupName $app.ResourceGroup | Where-Object { $_.PrivateLinkServiceConnections.PrivateLinkServiceId -eq $app.Id } $hasPrivateEP = [bool]$privateEndpoints $epNames = if ($hasPrivateEP) { $privateEndpoints.Name -join ', ' } else { '无' } # 获取VNet集成信息 $vnetConn = Get-AzWebAppVnetConnection -ResourceGroupName $app.ResourceGroup -Name $app.Name $hasVnetInt = [bool]$vnetConn $vnetSubnet = if ($hasVnetInt) { "$($vnetConn.VnetName)/$($vnetConn.SubnetName)" } else { '无' } # 筛选自定义域名(排除默认azurewebsites.net域名) $customDomains = $app.HostNames | Where-Object { $_ -notmatch '\.azurewebsites\.net$' } $domainList = if ($customDomains) { $customDomains -join ', ' } else { '无' } # 组装结果对象 $details = [PSCustomObject]@{ '应用服务名称' = $app.Name '资源组名称' = $app.ResourceGroup '应用服务计划名称' = $asp.Name '应用服务计划资源组' = $asp.ResourceGroup '应用服务计划SKU' = "$($asp.Sku.Tier) - $($asp.Sku.Name)" '是否配置自动缩放' = if ($isAutoScaled) { '是' } else { '否' } '是否配置专用终结点' = if ($hasPrivateEP) { '是' } else { '否' } '专用终结点名称' = $epNames '是否配置虚拟网络集成' = if ($hasVnetInt) { '是' } else { '否' } '虚拟网络/子网名称' = $vnetSubnet '最低TLS版本' = $app.SiteConfig.MinTlsVersion '是否强制HTTPS' = if ($app.HttpsOnly) { '是' } else { '否' } '自定义域名' = $domainList } $webAppDetails += $details } # 控制台输出结果(可取消注释导出到CSV) $webAppDetails | Format-Table -AutoSize # $webAppDetails | Export-Csv -Path "WebAppConfigDetails.csv" -Encoding UTF8 -NoTypeInformation
关键逻辑说明
- 自动缩放判断:免费/共享层不支持自动缩放,直接返回"否";标准及以上层级通过检查关联的自动缩放规则判断是否启用
- 专用终结点匹配:通过PrivateEndpoint的
PrivateLinkServiceId与WebApp的资源ID关联,筛选出绑定的专用终结点 - VNet集成信息:使用
Get-AzWebAppVnetConnection直接获取WebApp绑定的虚拟网络和子网名称 - 自定义域名筛选:排除默认的
*.azurewebsites.net域名,仅保留用户配置的自定义域名
内容的提问来源于stack exchange,提问作者User Name
相关产品推荐
相关产品推荐

