Server 2008电子邮件事件variables

Server 2008的新function之一是能够将任务附加到事件日志中的特定事件。 其中一个可用的操作是通过SMTP服务器发送电子邮件。

这个工作很好,但是如果在邮件正文中可以放置事件内容,那将是理想的。 我曾尝试使用$ eventdescription和%eventdescription%,但这些只是在黑暗中拍摄。 任何数量的谷歌search都没有结果。

有谁知道这是可能的吗?

更新 :下面的Sparks的build议是我认为正确的方向迈出的一步,但是这个方法似乎并不适用于所有的值。 例如,我可以如图所示拉取RecordID,Severity和Channel,但不能使用相同的方法来检索EventID,最重要的是描述。

以下是来自一个事件的原始XML:

[Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"] [System] [Provider Name="DFSR" /] [EventID Qualifiers="16384"]4412[/EventID] [Level]4[/Level] [Task]0[/Task] [Keywords]0x80000000000000[/Keywords] [TimeCreated SystemTime="2009-05-14T18:18:09.000Z" /] [EventRecordID]45692[/EventRecordID] [Channel]DFS Replication[/Channel] [Computer]servername.domain.com[/Computer] [Security /] [/System] [EventData] [Data]9046C3F4-843E-4A53-B941-4B20764072E5[/Data] [Data]D:\departments\Geomatics\Plan Quality\Data Processing\CG3533017 2009-05-13 KT FIXED[/Data] [Data]D:\departments[/Data] [Data]{26D5F604-E603-4F87-8EC3-DE9A945DA8FD}-v927199[/Data] [Data]Departments[/Data] [Data]domain.ca\files\departments[/Data] [Data]B8242CE2-F5EB-47DA-BA5B-1DD2F7EE3AB9[/Data] [Data]DFAA7A54-66CB-4C31-81A0-0F861382C32C[/Data] [Data]CG3533017 2009-05-13-{26D5F604-E603-4F87-8EC3-DE9A945DA8FD}-v927199[/Data] [/EventData] [/Event] 

我曾尝试使用ValueQuery的EventData,但它没有返回任何数据。

    我对此有不同的看法,但是这种方法会在与自定义filter相匹配的新事件上生成电子邮件,并在电子邮件正文中包含所有事件详细信息。

    1)用你想要的filter在事件查看器中创build一个“自定义视图”。

    2)一旦你看到了,你应该看到一个链接到“附加任务到这个自定义视图…”。

    我select从这里( http://caspian.dotconf.net/menu/Software/SendEmail/ )使用sendMail.exe解压到C:\ sendmail。 原因是微软的“发送电子邮件”的行动有SMTPauthentication的问题,显然,甚至不存在于Server 2012。

    所以在我的情况下,我select“启动程序”,而将任务附加到自定义视图。 但是我们将把它编辑为XML,所以不用担心通过GUI来填充它。

    3)将新的任务导出为XML,稍后我们将对其进行编辑。

    4)在C:\ sendmail文件夹下用以下三行创build一个'mail-event.bat'文件:

     C:\Windows\system32\wevtutil.exe qe Application /f:text /q:"<QueryList><Query Id='0' Path='Application'><Select Path='Application'>*[System[(EventRecordID=%1)]]</Select></Query></QueryList>" > C:\sendmail\%1.log C:\sendmail\sendEmail.exe -s <smtp_server> -f <from> -xu <user> -xp <pass> -t <to> -u "<subject>" -o message-file=c:\sendmail\%1.log del C:\sendmail\%1.log 

    显然,用所需的值replace“smtp_server”,“from”,“user”,“pass”,“to”,“subject”。

    这将在C:\ sendmail下为该事件创build一个'$(EventRecordID).log'文件,并将其发送,然后将其删除。

    您可以通过进入事件查看器,在应用程序日志中打开一个事件,切换到详细信息选项卡,select“XML视图”,然后查找EventRecordID来testingbatch file的工作方式。 复制该整数,然后从命令行运行:

    C:\ sendmail> log-event.bat 53522

    当然,用EventRecordID节点的值replace53522。 如果您收到电子邮件,请到您的开心的地方。

    注意:您可能已经注意到string“应用程序”在wevtutil.exe的命令行中显示了几次 – 这是因为我似乎无法通过将其直接指向自定义视图来使其工作,并且我的自定义视图碰巧是应用程序日志中的所有事件的子集。 例如,如果尝试从“系统”日志中发送事件,则可能需要对其进行调整以使其适用于您的情况。

    5)编辑您导出的XML,我们将做两个更改:

    首先,将下面的“ValueQueries”节点添加到“EventTrigger”节点下的XML中:

     <EventTrigger> <Enabled>true</Enabled> <Subscription>...snip...</Subscription> <ValueQueries> <Value name="EventRecordID">Event/System/EventRecordID</Value> </ValueQueries> </EventTrigger> 

    注意:在上面,我根据您创build的自定义视图剪切了“订阅”信息。 不要将我的“订阅”复制到您的XML中!

    其次,将Actions节点replace为以下内容:

     <Actions Context="Author"> <Exec> <Command>C:\sendmail\mail_event.bat</Command> <Arguments>$(EventRecordID)</Arguments> </Exec> </Actions> 

    现在,导致一个新的事件出现在您的自定义视图,你应该自动获得电子邮件通知! 呜呼!

    我无法访问Server 2008或Vista计算机自己尝试此操作,并为您获取variables,但本文应该是有用的。

    如果您创build一个基本任务,然后查看该任务的XML,则应该看到所有可用的值。

    http://blogs.technet.com/otto/archive/2007/11/09/find-the-event-that-triggered-your-task.aspx

    使用Sparks提供的链接中的文档,将此附加行添加到从Task Scheduler导出的XML中以获取事件文本:

     <Value name="eventData">Event/EventData/Data</Value> 

    也有趣(希望不言自明):

     <Value name="eventTimeCreated">Event/System/TimeCreated/@SystemTime</Value> 

    我发现这个谷歌search“事件/系统/ EventRecordID”

    然后,您可以在任务中引用$(eventData)和$(eventTimeCreated)variables。

    它看起来好像通过逐步遍历XML层次来指定值。 我希望你能够通过分解原始的XML转储来创build一个斜线分隔的expression式来指定事件的大部分部分。

    看起来好像'/ @'是这个语法中空格字符的缩写。

    你是在事件数据之后?

    我的要求是每当IIS应用程序池由于空闲超时而closures时发送一封电子邮件。 我想要closures的应用程序池的名称出现在电子邮件中。

    这对我工作:

    <Value name =“appPoolId”> Event / EventData / Data [@Name ='AppPoolID'] </ Value>

    我从来没有结束这个工作,而且看起来像Server 2012这个电子邮件function已被完全删除。 不幸的是,死路一条。

    我想我完成了你的想法

     <?xml version="1.0" encoding="UTF-16"?> <Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Date>2013-02-07T17:30:20.8644895</Date> <Author>QA\TimT</Author> </RegistrationInfo> <Triggers> <EventTrigger> <Enabled>true</Enabled> <Subscription>&lt;QueryList&gt;&lt;Query Id="0" Path="ForwardedEvents"&gt;&lt;Select Path="ForwardedEvents"&gt;*&lt;/Select&gt;&lt;/Query&gt;&lt;/QueryList&gt;</Subscription> <ValueQueries> <Value name="EventChannel">Event/System/Channel</Value> <Value name="EventComputer">Event/System/Computer</Value> <Value name="EventData">Event/EventData/Data</Value> <Value name="EventID">Event/System/EventID</Value> <Value name="EventRecordID">Event/System/EventRecordID</Value> <Value name="EventSeverity">Event/System/Level</Value> <Value name="Message">Event/RenderingInfo/Message</Value> </ValueQueries> </EventTrigger> </Triggers> <Principals> <Principal id="Author"> <UserId>QA\Administrator</UserId> <LogonType>Password</LogonType> <RunLevel>LeastPrivilege</RunLevel> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>false</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <IdleSettings> <StopOnIdleEnd>true</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession> <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>P3D</ExecutionTimeLimit> <Priority>7</Priority> </Settings> <Actions Context="Author"> <SendEmail> <Server>mail.nowhere.com</Server> <Subject>$(EventComputer) reports event $(EventID) in $(EventChannel), record $(EventRecordID), severety $(EventSeverity)</Subject> <To>[email protected]</To> <From>[email protected]</From> <Body>$(EventData) $(Message)</Body> <HeaderFields /> <Attachments /> </SendEmail> </Actions> </Task>