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

