• 首页
  • 文章
  • PowerShell脚本自动检查证书过期日期并发送报警通知的方法

PowerShell脚本自动检查证书过期日期并发送报警通知的方法

编辑:TopSSL.cn
来源:TopSSL.cn
浏览量:122
  
2025-12-27 06:07

PowerShell证书到期检查脚本

使用PowerShell脚本自动监控证书到期时间是企业运维的常见做法。该脚本可以读取本地证书存储或直接扫描域名,并在证书即将过期时通过邮件或系统日志发出预警。

PowerShell证书到期检查脚本

以下脚本将扫描本地计算机中已安装的证书,并筛选出剩余有效期不足30天的证书信息:

PowerShell

# 定义过期阈值为30天
$thresholdDays = 30
$deadline = (Get-Date).AddDays($thresholdDays)

# 扫描本地证书存储
$certs = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.NotAfter -ne $null }

foreach ($cert in $certs) {
    if ($cert.NotAfter -lt $deadline) {
        $daysLeft = ($cert.NotAfter - (Get-Date)).Days
        Write-Host "警告:证书 $($cert.Subject) 将在 $daysLeft 天后过期 (到期日: $($cert.NotAfter))" -ForegroundColor Red
    
        # 此处可添加 Send-MailMessage 指令发送邮件通知
    }
}

脚本核心逻辑说明

  • Get-ChildItem -Path Cert:这是PowerShell的强大特性,将系统的证书存储区映射为驱动器,像操作文件一样遍历证书。
  • NotAfter属性:该属性存储了证书的精确失效时间。
  • 自动化执行:建议将此脚本加入“Windows任务计划程序”,设置为每周执行一次。

进阶:远程域名监控方案

如果您不想登录每一台服务器查看,也可以使用脚本直接扫描线上域名的证书状态:

PowerShell

$domain = "www.yourdomain.com"
$request = [Net.HttpWebRequest]::Create("https://$domain")
try {
    $request.GetResponse() | Out-Null
} catch {}
$cert = $request.ServicePoint.Certificate
$expirationDate = [DateTime]::Parse($cert.GetExpirationDateString())
Write-Host "$domain 的到期时间为: $expirationDate"

这种方式不需要登录服务器,适合从管理机统一监控公司所有的外部业务站点。

北京SSL证书申请

SSL证书的组织部,锁定安全,加密信任,让网站安全不再是难题!
企业使用OA SSL证书,让你的网站马上变安全, 申请SSL证书?找我!简单、快捷、专业!

即刻扫码 咨询技术
证书技术支持
139-1050-5354
欢迎打扰
热      情
SSL证书 | 免费SSL证书申请、安装、管理与安全指南
企业OV SSL证书申请
139-1050-5354
真诚合作 欢迎咨询