PowerShell脚本自动检查证书过期日期并发送报警通知的方法
编辑:TopSSL.cn
来源:TopSSL.cn
浏览量:122
2025-12-27 06:07

使用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证书的组织部,锁定安全,加密信任,让网站安全不再是难题!
企业使用OA SSL证书,让你的网站马上变安全,
申请SSL证书?找我!简单、快捷、专业!
证书技术支持
139-1050-5354
139-1050-5354
欢迎打扰
热 情
热 情
企业OV SSL证书申请
139-1050-5354
真诚合作 欢迎咨询