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

求助:编写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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:25:22