Когда я тестирую этот скрипт, он отправляет пустое тело в сообщении электронной почты. Это дает мне правильный вывод, когда я выполняю ту часть, которая проверяет срок действия сертификата
$strHostname = [system.environment]::MachineName
$smtpServer = "smtp.foo.net"
$msgFrom = "$strHostname@foo.net"
$msgReplyTo = "user@foo.net"
$msgToAdd = "user@foo.net"
$msgSubject = "WARNING: Certificates Expiring Soon"
$threshold = 30 #Number of days to look for expiring certificates
$deadline = (Get-Date).AddDays($threshold) #Set deadline date
# Check for cert expiration dates
$msgBody = Invoke-Command -ComputerName server02, server03, server04 {
Dir Cert:\LocalMachine\My
} | Sort-Object -Property NotAfter | foreach {
if ($_.NotAfter -le $deadline) {
$_ | Select Issuer, Subject, NotAfter,
@{Label="Expires In (Days)";Expression={($_.NotAfter - (Get-Date)).Days}}
}
}
function sendMail ([string]$msgSubject, [string]$msgBody) {
$msg = New-Object Net.Mail.MailMessage
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$msg.From = $msgFrom
$msg.ReplyTo = $msgReplyTo
$msg.To.Add("$msgToAdd")
$msg.Subject = $msgSubject
$msg.Body = $msgBody
$smtp.Send($msg)
}
sendMail $msgSubject $msgBody