从文件中捕获关键字FAILED并发送电子邮件通知

时间:2017-01-05 10:36:38

标签: email powershell

我需要PowerShell脚本从输出文件中捕获错误FAILED,如果状态为FAILED,则将电子邮件发送到DL列表,主题为失败,并且电子邮件正文中应该有输出文件格式原样。我坚持写if声明。请帮帮我。

输出文件的位置是D:\ logs。

输出文件的格式:

process_id       : 1
STATUS           : FAILED
RULE_ID          : 44
RULE_NAME        : OEBS-1
LAST_UPDATE_DATE : 1/4/2017 11:37:02 AM

1 个答案:

答案 0 :(得分:-1)

import-csv d:\logs\logfile.csv | where-object { $_.STATUS -eq "FAILED" } | 
send-mailmessage -from "User01 <user01@example.com>" -to "User02 <user02@example.com>",
"User03 <user03@example.com>" -subject "Sending the Attachment" -body     
"Forgot to send the attachment. Sending now." -Attachments "data.csv" 
-priority High -dno onSuccess, onFailure -smtpServer smtp.fabrikam.com

我使用了此处示例2中的send-mailmessage:https://msdn.microsoft.com/en-us/powershell/reference/3.0/microsoft.powershell.utility/send-mailmessage?f=255&MSPPError=-2147217396。这给出了使用许多send-mailmessage参数的示例。您可以使用您需要的那些,或修改以添加您想要的内容。

**代码的格式可能不合适。我试着让它保持整洁,并且在一个页面上没有滚动。我没有像在实际的PowerShell代码中那样用`来表示新行。

$failed = import-csv d:\logs\logfile.csv | where-object {$_.STATUS -eq "FAILED"}
send-mailmessage -from failedjob@fabrikam.com -to dl@fabrikam.com -subject Failed -body $failed -smtpserver mailserverthatwillaccept.fabrikam.com

这是另一种选择。

**根据Ansgar的评论编辑import-csv

谢谢,蒂姆。