Windows Server 2008 在事件日志错误时发送错误消息

Windows Server 2008 在事件日志错误时发送错误消息

我们目前有一台 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

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/eventtriggers.mspx?mfr=true

答案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 事件日志 - 电子邮件通知

相关内容