我有一个计划的任务,当应用程序发生某事时发送一封电子邮件。 现在我想在电子邮件中发送事件的消息细节。 怎么做?
在带有任务计划程序的Windows Server 2008 R2中。
唯一的方法来完成这是一个解决方法(在我看来)。 您将需要为您的任务创build两个操作。 步骤如下:
该过程在此处详述: http : //blogs.technet.com/b/jhoward/archive/2010/06/16/getting-event-log-contents-by-e-mail-on-an-event-log-trigger。 ASPX
这不是实现它的唯一方法。 实际上,在Windows Server 2008中至less有一个更好的方法:
http://www.buit.org/2009/07/16/event-based-triggered-tasks/
总而言之,您需要将任务定义导出到xml,在文本编辑器中添加一些xpath查询以获取所需的数据,更新命令行,然后将更新的任务定义导回到任务调度程序。
一旦导出打开的XML文件,并find<EventTrigger>节点。
创build子节点<ValueQueries>
<ValueQueries> <Value name="EventID">Event/System/EventRecordID</Value> <Value name="Channel">Event/System/Channel</Value> </ValueQueries>
然后,可以使用$(EventID)和$(Channel)在命令行中引用此值查询数据。 从我testing的电子邮件事件中,不能正确replace这些值。 相反,你需要执行一个命令行。 当然,您可以将xpath查询添加到事件中的任何数据,这些仅仅是示例。
将这些数据查询中的某些数据传递到命令行(包括引号,斜线等各种字符可能与命令解释器中的特殊字符冲突)时,您可能还会遇到一些挑战。 为了减轻这一点,我采取了使用上面定义的两个参数,然后使用wevtutil检索剩余的事件数据:
wevtutil qe "$(Channel)" /q:"*[System[(EventREcordID=$(EventID)]]" /f:xml
然后你可以用生成警报的事件logging的完整xml文本(比如发送电子邮件,parsingxml等等)来做你想做的事情。
例如,您可以在任务中定义以下操作,将事件xml写入磁盘:
<Exec> <Command>powershell.exe</Command> <Arguments>start-transcript -path C:\alertlog.log -append; add-content -path C:\output.txt -value (wevtutil qe "$(Channel)" /q:"*[System[(EventRecordID=$(EventID))]]" /f:xml); stop-transcript;</Arguments> </Exec>
引用的博客文章更详细。