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

如何编写PowerShell脚本列出Azure订阅中App Service的证书及关联计划

如何编写PowerShell脚本列出Azure订阅中App Service的证书及关联的App Service Plan

嘿,我来帮你搞定这个需求!下面是一个实用的PowerShell脚本,能帮你遍历指定Azure订阅里的所有App Service,收集它们关联的App Service Certificate信息,以及对应的App Service Plan详情。

前提准备

首先确保你已经安装了最新的Az PowerShell模块(AzureRM已被弃用,推荐使用Az),如果没安装的话,先运行:

Install-Module -Name Az -AllowClobber -Scope CurrentUser

完整脚本

# 1. 登录Azure账户(未登录时执行)
Connect-AzAccount

# 2. 如需切换到特定订阅,取消注释并替换为你的订阅ID/名称
# Set-AzContext -SubscriptionId "你的订阅ID"

# 3. 获取当前订阅下所有App Service
$webApps = Get-AzWebApp

# 4. 初始化数组存储最终结果
$results = @()

# 5. 遍历每个App Service收集信息
foreach ($webApp in $webApps) {
    Write-Host "正在处理App Service: $($webApp.Name)..." -ForegroundColor Cyan

    # 获取关联的App Service Plan详情
    $appServicePlan = Get-AzAppServicePlan -ResourceId $webApp.ServerFarmId

    # 获取该App Service的所有SSL绑定(包含证书信息)
    $sslBindings = Get-AzWebAppSSLBinding -ResourceGroupName $webApp.ResourceGroup -WebAppName $webApp.Name

    if ($sslBindings) {
        # 遍历每个SSL绑定对应的证书
        foreach ($binding in $sslBindings) {
            # 尝试获取App Service Certificate资源(针对平台托管的证书)
            $certificate = Get-AzAppServiceCertificate -ResourceGroupName $webApp.ResourceGroup -Name $binding.Thumbprint -ErrorAction SilentlyContinue

            # 整理结果对象
            $resultObj = [PSCustomObject]@{
                AppServiceName          = $webApp.Name
                AppServiceResourceGroup = $webApp.ResourceGroup
                AppServicePlanName      = $appServicePlan.Name
                AppServicePlanTier      = $appServicePlan.Sku.Tier
                CertificateThumbprint   = $binding.Thumbprint
                CertificateSubjectName  = $binding.SubjectName
                CertificateIssuer       = if ($certificate) { $certificate.Issuer } else { "自定义上传证书" }
                CertificateExpirationDate = if ($certificate) { $certificate.ExpirationDate } else { $binding.ExpirationDate }
            }

            $results += $resultObj
        }
    } else {
        # 无关联证书的App Service也记录基础信息
        $resultObj = [PSCustomObject]@{
            AppServiceName          = $webApp.Name
            AppServiceResourceGroup = $webApp.ResourceGroup
            AppServicePlanName      = $appServicePlan.Name
            AppServicePlanTier      = $appServicePlan.Sku.Tier
            CertificateThumbprint   = "无关联证书"
            CertificateSubjectName  = "无关联证书"
            CertificateIssuer       = "无关联证书"
            CertificateExpirationDate = "无关联证书"
        }

        $results += $resultObj
    }
}

# 6. 控制台输出结果
$results | Format-Table -AutoSize

# 可选:导出结果到CSV文件,方便后续分析
# $results | Export-Csv -Path "AzureAppServiceCertificates.csv" -NoTypeInformation -Encoding UTF8

脚本说明

  • 脚本会自动完成Azure账户登录,你也可以手动指定目标订阅
  • 遍历过程中会实时打印当前处理的App Service名称,方便跟踪进度
  • 不仅收集证书的核心信息(指纹、主题、有效期),还会关联显示App Service Plan的名称和层级(如Basic、Standard)
  • 即使App Service没有绑定证书,也会记录其基础信息,避免遗漏
  • 支持一键导出结果到CSV文件,适合批量分析场景

使用注意事项

  • 确保你拥有目标订阅的Web App Contributor或更高权限,否则可能无法读取部分资源信息
  • 如果订阅内App Service数量较多,脚本运行时间会相应延长,请耐心等待

内容的提问来源于stack exchange,提问作者The Man

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:03:07