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

如何用PowerShell获取IIS中所有Web应用的SSL标识信息

用PowerShell批量获取IIS Web应用的SSL及客户端证书配置

直接用这个PowerShell脚本就能批量拿到所有Web应用的SSL要求和客户端证书状态:

# 导入IIS管理模块
Import-Module WebAdministration

# 遍历所有站点下的Web应用
Get-ChildItem IIS:\Sites | ForEach-Object {
    $siteName = $_.Name
    # 获取当前站点下的所有应用(含根应用)
    Get-ChildItem "$($_.PSPath)\Applications" | ForEach-Object {
        $appPath = $_.Path
        # 读取SSL访问配置
        $sslAccessConfig = Get-WebConfiguration -Filter '/system.webServer/security/access' -PSPath "$($_.PSPath)"
        # 读取客户端证书映射认证配置
        $clientCertAuthConfig = Get-WebConfiguration -Filter '/system.webServer/security/authentication/iisClientCertificateMappingAuthentication' -PSPath "$($_.PSPath)"
        
        # 整理输出内容
        [PSCustomObject]@{
            站点名称 = $siteName
            应用路径 = $appPath
            是否要求SSL = if ($sslAccessConfig.Ssl -eq $true) { "是" } else { "否" }
            客户端证书状态 = switch ($clientCertAuthConfig.Enabled) {
                $true {
                    # 通过SslFlags判断证书状态:2=Accept,4=Require
                    $sslFlags = $sslAccessConfig.SslFlags
                    if ($sslFlags -band 4) { "Required" }
                    elseif ($sslFlags -band 2) { "Accepted" }
                    else { "Ignored" }
                }
                $false { "Ignored" }
            }
        }
    }
} | Format-Table -AutoSize

脚本说明

  • 运行前确保已安装IIS管理工具(Windows Server默认自带,桌面版可能需手动添加),WebAdministration模块是操作IIS配置的基础。
  • 脚本会遍历所有IIS站点下的所有Web应用,包括每个站点的根应用。
  • 核心逻辑:
    • 通过/system.webServer/security/access节点的Ssl属性判断是否强制要求SSL访问。
    • 结合SslFlags属性和客户端证书映射认证的启用状态,确定证书是Required(必须提供)、Accepted(可选提供)还是Ignored(不校验)。
  • 输出结果以表格形式展示,清晰列出每个应用的站点名称、路径、SSL要求和证书状态。

如果只想查看特定站点的应用,把Get-ChildItem IIS:\Sites改成Get-ChildItem IIS:\Sites\你的站点名称即可。

内容的提问来源于stack exchange,提问作者Frank Kaagman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:11:02