Email 如何使用IF条件?
我的要求是,每当应用程序池回收时,脚本需要发送一封电子邮件给一组人。脚本将从事件查看器中搜索应用程序池事件ID,并在找到任何事件时发送电子邮件。如果找到事件ID,它将在D:\temp中创建一个日志文件,并将该日志文件发送给收件人 问题是,当没有事件发生时,脚本正在发送一封带有空日志文件作为附件的电子邮件。我不想发送空文件,脚本应仅在事件发生时发送。如果我们使用Email 如何使用IF条件?,email,powershell,if-statement,Email,Powershell,If Statement,我的要求是,每当应用程序池回收时,脚本需要发送一封电子邮件给一组人。脚本将从事件查看器中搜索应用程序池事件ID,并在找到任何事件时发送电子邮件。如果找到事件ID,它将在D:\temp中创建一个日志文件,并将该日志文件发送给收件人 问题是,当没有事件发生时,脚本正在发送一封带有空日志文件作为附件的电子邮件。我不想发送空文件,脚本应仅在事件发生时发送。如果我们使用if条件,这可以解决,但不确定如何在我的脚本中使用它 下面是我用来运行的脚本。当前,它在事件发生和未发生时发送日志 $date = Get
if
条件,这可以解决,但不确定如何在我的脚本中使用它
下面是我用来运行的脚本。当前,它在事件发生和未发生时发送日志
$date = Get-Date -Format "MM-dd-yyyy HH-mm-ss"
$starttime = (Get-Date).AddMinutes(-5)
Get-WinEvent -ComputerName computer1 -Filterhashtable @{
LogName='system';
StartTime=$StartTime;
ID=3201,5079,2262,2263,5070,5074,5075,5076,5077,5078,5080,5081,5093,5117,5186
} |
select machinename,timecreated,id,message |
Format-Table machinename,timecreated,id,message -AutoSize |
Out-String -Width 6096 |
Out-File "D:\Logs\PS\$date.txt" -NoClobber
Send-MailMessage -To user1@test.com `
-Subject "Application Pool Recycled in Computer1" `
-Body "Application Pool has Recycled in Computer1" `
-SmtpServer smtp.com `
-From Apppool_Monitoring@test.com `
-Attachments "D:\Logs\PS\$date.txt"
读取日志文件的内容。如果日志文件包含数据,则发送电子邮件,否则不执行任何操作
if(Get-Content -Path "D:\Logs\PS\$date.txt")
{
#send email.......
}
读取日志文件的内容。如果日志文件包含数据,则发送电子邮件,否则不执行任何操作
if(Get-Content -Path "D:\Logs\PS\$date.txt")
{
#send email.......
}
在创建输出和发送邮件之前,请检查是否确实收到了事件:
$evt = Get-WinEvent -ComputerName computer1 -Filterhashtable @{...}
if ($evt) {
$evt | Format-Table ... |
Out-String -Width 6096 |
Out-File "D:\Logs\PS\$date.txt" -NoClobber
Send-MailMessage ...
}
如果希望将消息内联而不是作为附件,请将事件字符串放在变量中,并将其放在消息正文中:
if ($evt) {
$msg = $evt | Format-Table ... | Out-String -Width 6096
Send-MailMessage ... -Body "Application Pool has Recycled in Computer1`n$msg" ...
}
在创建输出和发送邮件之前,请检查是否确实收到了事件:
$evt = Get-WinEvent -ComputerName computer1 -Filterhashtable @{...}
if ($evt) {
$evt | Format-Table ... |
Out-String -Width 6096 |
Out-File "D:\Logs\PS\$date.txt" -NoClobber
Send-MailMessage ...
}
如果希望将消息内联而不是作为附件,请将事件字符串放在变量中,并将其放在消息正文中:
if ($evt) {
$msg = $evt | Format-Table ... | Out-String -Width 6096
Send-MailMessage ... -Body "Application Pool has Recycled in Computer1`n$msg" ...
}
谢谢你,基兰。我已经试过这个了,效果很好。它正在读取文件的内容,如果没有任何内容,则不会发送电子邮件。如果有一些内容,那就是发送电子邮件。谢谢你,基兰。我已经试过这个了,效果很好。它正在读取文件的内容,如果没有任何内容,则不会发送电子邮件。如果有一些内容,那么它就是在发送电子邮件。@Kiran&Ansgar,有什么办法吗。我们可以在邮件正文中发布输出而不是作为附件发送吗?谢谢Ansgar,它正在工作。我只是做了些小小的改变。我使用了“应用程序池已在Computer1
n$msg中回收”而不是“应用程序池已在Computer1nn$msg中回收”。使用
n`n$msg,我没有在电子邮件正文中获得输出。@Kiran&Ansgar,有什么办法吗。我们可以在邮件正文中发布输出而不是作为附件发送吗?谢谢Ansgar,它正在工作。我只是做了些小小的改变。我使用了“应用程序池已在Computer1n$msg中回收”而不是“应用程序池已在Computer1nn$msg中回收”。使用
n`n$msg,我没有在电子邮件正文中获得输出。