我们目前有一台 Windows Server 2008 计算机,我们已为其配置自定义任务,以便在某个事件日志中发生错误时发送电子邮件。触发器运行完美,并在我们需要时发送电子邮件。
但是,我们找不到让电子邮件包含有关错误的信息(尤其是错误消息)的方法。有没有办法让消息根据事件日志错误的内容而改变?
答案1
也许 eventtriggers 就是您的答案?我还不太熟悉 Server 2008,但我以前在 2003 中一直使用 eventtriggers。您可以运行自己编写的任何命令或脚本,因此您可以做任何您想做的事情。
http://www.petri.co.il/how-to-use-eventtriggersexe-to-send-e-mail-based-on-event-ids.htm
答案2
使用 eventtriggers 触发 VBscript 运行。您可以使用类似下面的脚本发送包含最近错误的电子邮件,但我尚未将其投入生产,因为它会导致 WMIPRVSE.EXE 中的服务器 CPU 使用率过高(我假设这是处理 WMI 查询的进程)。
警告:以下脚本会导致 CPU 使用率过高,不适用于高使用率/关键任务系统
strComputer = "."
Dim emailText
emailText = "An error has occurred on [server_name]. This email was generated by eventtriggers.exe on [server_name]. Run eventtriggers.exe /? at the command prompt on [server_name] for help with managing event triggers." & vbNewLine & vbNewLine & "Recent Errors:" & vbCrLf
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent " _
& "Where Type = 'Error'")
Dim count
count=0
For Each objEvent in colLoggedEvents
emailText = emailText & "*****************************************************************************" & vbNewLine & vbNewLine & objEvent.Message & vbNewLine & vbNewLine
count = count + 1
If count > 4 then
Exit For
End If
Next
Set objEmail = CreateObject("CDO.Message")
objEmail.From = "[email protected]"
objEmail.To = "[email protected]"
objEmail.Subject = "Server Error"
objEmail.Textbody = emailText
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
"[ENTER YOUR SERVER HERE]"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
或者,看看这个答案:Windows 事件日志 - 电子邮件通知