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

基于PowerShell的F5 SSL证书过期日期转换与30天告警需求

我来帮你搞定这个F5 SSL证书过期监控的需求,分两部分解决你的问题,最后给出完整的自动发邮件脚本:

1. 将Int32类型的expirationDate转换为日期并对比

这个expirationDate: 1531094399是Unix时间戳(从1970年1月1日00:00:00 UTC开始计算的秒数),在PowerShell里可以这样转换为本地日期并对比:

# 定义过期时间戳
$expirationTimestamp = 1531094399
# 转换为本地DateTime对象
$expirationDateFromTimestamp = [DateTimeOffset]::FromUnixTimeSeconds($expirationTimestamp).LocalDateTime
# 获取当前本地时间
$currentDate = Get-Date
# 计算剩余天数
$daysUntilExpiration = ($expirationDateFromTimestamp - $currentDate).Days

拿到$daysUntilExpiration后,就能直接判断证书是否即将过期了。

2. 将expirationString与当前时间对比

expirationString: Jul 8 23:59:59 2018 GMT是固定格式的日期字符串,需要用ParseExact方法指定格式解析,注意这里要指定英文文化信息,避免系统语言影响解析结果:

# 定义过期字符串
$expirationString = "Jul 8 23:59:59 2018 GMT"
# 解析为DateTime对象(指定格式和文化信息)
$expirationDateFromString = [DateTime]::ParseExact($expirationString, "MMM d HH:mm:ss yyyy GMT", [System.Globalization.CultureInfo]::GetCultureInfo("en-US"))
# 转换为本地时间(按需调整)
$expirationDateFromStringLocal = $expirationDateFromString.ToLocalTime()
# 计算剩余天数
$daysUntilExpirationFromString = ($expirationDateFromStringLocal - (Get-Date)).Days
完整的PowerShell预警脚本(30天过期自动发邮件)

把上面的逻辑整合,加上邮件发送功能,脚本如下:

# -------------------------- 配置参数 --------------------------
# F5证书的过期信息(替换成从F5获取的实际值)
$certExpirationTimestamp = 1531094399
$certExpirationString = "Jul 8 23:59:59 2018 GMT"
# 预警阈值:30天
$warningThreshold = 30
# 邮件配置
$smtpServer = "your-smtp-server.com"
$mailFrom = "cert-alert@yourdomain.com"
$mailTo = "admin@yourdomain.com"
$mailSubject = "⚠️ F5 SSL证书即将过期预警"
# -------------------------------------------------------------

# 通过时间戳计算过期时间(两种方法选一种即可)
$expirationDate = [DateTimeOffset]::FromUnixTimeSeconds($certExpirationTimestamp).LocalDateTime
$currentDate = Get-Date
$daysLeft = ($expirationDate - $currentDate).Days

# 可选:通过字符串计算做结果验证
# $expirationDateFromString = [DateTime]::ParseExact($certExpirationString, "MMM d HH:mm:ss yyyy GMT", [System.Globalization.CultureInfo]::GetCultureInfo("en-US")).ToLocalTime()
# $daysLeftFromString = ($expirationDateFromString - $currentDate).Days

# 判断是否需要发送预警邮件
if ($daysLeft -le $warningThreshold -and $daysLeft -ge 0) {
    $mailBody = @"
    您好,
    检测到F5 SSL证书即将过期:
    - 证书过期日期:$($expirationDate.ToString("yyyy-MM-dd HH:mm:ss"))
    - 剩余天数:$daysLeft 天
    请及时处理证书更新事宜。
"@
    # 发送邮件
    Send-MailMessage -SmtpServer $smtpServer -From $mailFrom -To $mailTo -Subject $mailSubject -Body $mailBody -BodyAsHtml
    Write-Host "预警邮件已发送成功"
} elseif ($daysLeft -lt 0) {
    Write-Host "证书已过期,过期天数:$($daysLeft * -1) 天"
} else {
    Write-Host "证书状态正常,剩余天数:$daysLeft 天"
}

脚本说明

  • 务必替换# 配置参数部分的实际值,比如SMTP服务器地址、收件人邮箱等
  • 两种日期转换方法选一种即可,也可以同时保留做结果验证
  • Send-MailMessage cmdlet需要PowerShell 5.1及以上版本支持,如果是较新版本的PowerShell,也可以用MailKit模块来发送邮件(更灵活)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 13:17:39