如何编写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
相关产品推荐
相关产品推荐

