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

基于PowerShell脚本批量获取远程服务器SSL证书并导出至CSV的技术需求

批量获取远程服务器SSL证书并导出CSV的解决方案

这里给你一套适配200+服务器场景的PowerShell实现方案,既保留了你原有脚本的核心逻辑,又解决了批量远程执行和结果导出的需求:

完整可运行脚本

# 1. 定义你的远程服务器列表(也可以从文件导入,比如Get-Content .\servers.txt)
$remotecomputers = "Server01","Server02","Server03" # 替换为你的服务器名/IP集合

# 2. 批量远程执行证书采集逻辑,同时处理连接异常
$certificateResults = Invoke-Command -ComputerName $remotecomputers -ScriptBlock {
    # 远程服务器上执行的证书筛选逻辑,补全了过期时间的正确筛选
    Get-ChildItem -Path cert:\LocalMachine\My, cert:\LocalMachine\WebHosting `
    -SSLServerAuthentication | Where-Object { $_.NotAfter -gt (Get-Date) } |
    # 选择关键字段,新增ComputerName方便区分服务器
    Select-Object -Property @{Name='ComputerName';Expression={$env:COMPUTERNAME}},
        PSPath, FriendlyName, NotAfter, Subject, Thumbprint, Issuer
} -ErrorAction SilentlyContinue -ErrorVariable connectionErrors

# 3. 将采集结果导出到CSV文件(UTF8编码避免乱码)
$certificateResults | Export-Csv -Path ".\Remote_SSL_Certificates.csv" -NoTypeInformation -Encoding UTF8

# 可选:输出连接失败的服务器列表,方便排查
if ($connectionErrors) {
    Write-Host "以下服务器连接失败:" -ForegroundColor Red
    $connectionErrors.TargetObject | ForEach-Object { Write-Host $_ -ForegroundColor Yellow }
}

关键细节说明

  • 远程执行前置条件:确保你的账号拥有目标服务器的本地管理员权限,且目标服务器已启用WinRM服务(默认Windows Server会开启,若未开启可在目标机执行Enable-PSRemoting -Force快速配置)。
  • 修复时间筛选逻辑:你原有脚本里的Where-Object {((Get-Date))}是无效的,我改成了$_.NotAfter -gt (Get-Date),用来筛选未过期的SSL证书,符合实际运维需求。
  • 优化字段选择:新增了ComputerName(标记证书所属服务器)、Subject、Thumbprint、Issuer这些实用字段,让导出的CSV信息更完整,方便后续分析。
  • 大数量服务器适配:如果是200台服务器,建议加上-ThrottleLimit 20参数(放在Invoke-Command里),控制并发连接数,避免对网络或服务器造成过大压力。
  • 错误排查:脚本里用-ErrorVariable connectionErrors收集了连接失败的服务器,执行完会自动输出,方便你后续处理异常机器。

可选扩展

如果你需要筛选即将过期的证书(比如30天内),可以把Where-Object的条件改成:

Where-Object { $_.NotAfter -lt (Get-Date).AddDays(30) -and $_.NotAfter -gt (Get-Date) }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 21:47:41