Powershell 查看日志并发送电子邮件通知

Posted

技术标签:

【中文标题】Powershell 查看日志并发送电子邮件通知【英文标题】:Powershell to look at log and send email notification 【发布时间】:2019-05-29 02:44:12 【问题描述】:

脚本新手。我需要帮助创建一个 powershell 脚本,该脚本将查看日志文件并搜索关键字,例如失败/不成功,并且关键字存在,发送最后 50 行的电子邮件。

我已经完成了部分脚本,但我无法将它们组合在一起。

查看日志并打印出该行

$PATH="C:\tmp\test.log"
Get-Content $PATH -Tail 50 | Where-Object  $_.Contains("fail") 

发送到 SMTP 服务器的电子邮件已排序并正常工作

$From = "test@foobar.com"
$To = "test2@foobar.com"

$Subject = "Failed notification"
$Body = "This is what I want to say"
$SMTPServer = "smtp.foobar.com"
$SMTPPort = "25"
Send-MailMessage -From $From -to $To -Subject $Subject -Body $Body -SmtpServer $SMTPServer -port $SMTPPort

我知道我需要一个 IF 语句来比较内容并设置如果为真,则发送电子邮件。

有人可以帮我吗?

【问题讨论】:

快速问题:您当前的代码仅在文件的最后 50 行中查找单词“fail”,而忽略其余部分。这是你想要的吗? 是的,没错。 【参考方案1】:

在您学习的过程中,如果您需要提醒自己会返回什么内容,那么明确表达可能会更容易。

[string] $PATH="C:\tmp\test.log"
[string[]] $failedRows = Get-Content $PATH -Tail 50 | Where-Object  $_.Contains("fail") 
# Email to SMTP server sorted and working

[string] $From = "test@foobar.com"
[string] $To = "test2@foobar.com"
[string] $Subject = "Failed notification"
[string] $Body = "This is what I want to say"
[string] $SMTPServer = "smtp.foobar.com"
[string] $SMTPPort = "25"
if( $failedRows -and $failedRows.Length -gt 0) 
    Send-MailMessage -From $From -to $To -Subject $Subject -Body $Body -SmtpServer $SMTPServer -port $SMTPPort

记住 powershell 是 weakly typed。像 vscode 这样的编辑器和 powershell extension 会有所帮助,并且您可以看到有关如何改进代码的建议。

$PATH="C:\tmp\test.log"
$failedRows = Get-Content $PATH -Tail 50 | Where-Object  $_.Contains("fail") 
# Email to SMTP server sorted and working

$From = "test@foobar.com"
$To = "test2@foobar.com"
$Subject = "Failed notification"
$Body = "This is what I want to say"
$SMTPServer = "smtp.foobar.com"
$SMTPPort = "25"
if( $failedRows -and $failedRows.Length -gt 0) 
    Send-MailMessage -From $From -to $To -Subject $Subject -Body $Body -SmtpServer $SMTPServer -port $SMTPPort

【讨论】:

以上是关于Powershell 查看日志并发送电子邮件通知的主要内容,如果未能解决你的问题,请参考以下文章

使用 PowerShell 通过电子邮件通知获取硬盘 SMART 数据

Powershell 脚本无法使用任务计划程序通过 Outlook 发送电子邮件

分析错误日志,发送邮件通知

发送包含节日志信息的电子邮件

Exchange Server 2016管理系列课件37.通过搜索传输日志查看邮件收发状况

通过powershell 脚本通知公共邮箱账户快要过期和已经过期邮件通知