【发布时间】:2017-06-06 19:39:29
【问题描述】:
我正在尝试创建一个 powershell 脚本,它会在我的一个或多个证书即将到期时提醒我。我结合了我在互联网上找到的一些脚本,它似乎工作正常。唯一的问题是,当我发送电子邮件时,我只得到一大排,所有证书一个接一个。我更愿意获得更多的列表,例如: 证书1 主题:CN =你好 有效期:2/11/2017 1:00:00 AM
证书 2 主题:CN =你好2 有效期:2/11/2017 1:00:00 AM
如果可能的话,我还想获得一些帮助,了解如何从证书主题中获取 CN,而不是带有 (OU、O、L、S、C) 的完整主题
这是我当前的脚本:
import-module webadministration
$DaysToExpiration = 700 #just modify this date for more or less
$expirationDate = (Get-Date).AddDays($DaysToExpiration)
$body = Get-ChildItem CERT:LocalMachine/My |
Where {$_.NotAfter -lt (Get-Date).AddDays($DaysToExpiration)}
$body | select Subject, @{Name="Expiration"; Expression = {$_.NotAfter}} | fl | out-string
$emailSmtpServer = "172.17.1.236"
$emailSmtpServerPort = "25"
$emailSmtpUser = "test"
$emailSmtpPass = "test"
$emailMessage = New-Object System.Net.Mail.MailMessage
$PCName = $env:COMPUTERNAME
$emailMessage.From = "$PCName@test.com"
$emailMessage.To.Add( "test@dev.test.de" )
$emailMessage.Body = $body | select Subject, @{Name="Expiration"; Expression = {$_.NotAfter}} | fl | out-string
$emailMessage.Subject = "Certificates Expiring within $DaysToExpiration days"
$emailMessage.IsBodyHtml = $true
$SMTPClient = New-Object System.Net.Mail.SmtpClient( $emailSmtpServer , $emailSmtpServerPort )
$SMTPClient.EnableSsl = $false
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential( $emailSmtpUser , $emailSmtpPass );
if ($emailMessage.Body.Length -gt 1)
{
Write-host "Sending Email"
$SMTPClient.Send( $emailMessage )
}
【问题讨论】:
标签: email powershell notifications certificate