Server 2008の新機能の1つは、イベントログの特定のイベントにタスクを添付する機能です。使用可能なアクションの1つは、SMTPサーバーを介して電子メールを送信することです。
これはうまく機能していますが、メッセージ本文にイベントコンテンツを配置できると理想的です。 $ eventdescriptionと%eventdescription%を使用してみましたが、これらは暗闇の中でのショットです。少しでもグーグルすると結果は得られません。
これが可能かどうか誰かが知っていますか?
pdate:以下のSparksの提案は正しい方向への一歩だと思いますが、その方法はすべての値に対して機能するとは限りません。たとえば、図のようにRecordID、Severity、およびChannelをプルできますが、同じ方法を使用してEventID、または最も重要なのは説明を取得できません。
これは、1つのイベントからの生の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]
EventQueryにValueQueryを使用しようとしましたが、データが返されません。
私はこれを機能させることにしたことはありません。Server2012では、この電子メール機能は完全に削除されているようです。残念ながら行き止まり。
私はこれについて少し違った方法で取り組みましたが、このアプローチでは、カスタムフィルターに一致する新しいイベントでメールが生成され、すべてのイベントの詳細がメール本文に含まれます。
1)必要なフィルターを使用して、イベントビューアーで「カスタムビュー」を作成します。
2)ビューを取得すると、「このカスタムビューにタスクをアタッチ...」へのリンクが表示されます。
C:\ sendmailに抽出したここ( http://caspian.dotconf.net/menu/Software/SendEmail/ )からsendMail.exeを使用することを選択しました。その理由は、Microsoftの「電子メールの送信」アクションにSMTP認証に関する問題があり、明らかにServer 2012にも存在しないことです。
そのため、私の場合、カスタムビューにタスクをアタッチするときに[プログラムの開始]を選択しました。ただし、XMLとして編集するので、GUIで入力する必要はありません。
3)新しいタスクをXMLにエクスポートします。後で編集します。
4)C:\ sendmailフォルダの下に次の3行を含む「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
明らかに、「smtp_server」、「from」、「user」、「pass」、「to」、「subject」を目的の値に置き換えます。
これにより、C:\ sendmailの下にそのイベントのすべての詳細を含む「$(EventRecordID).log」ファイルが作成され、メールで送信されてから削除されます。
イベントビューアに移動し、アプリケーションログでイベントを開き、[詳細]タブに切り替えて[XMLビュー]を選択し、EventRecordIDを探すことで、バッチファイルが機能するかどうかをテストできます。その整数をコピーして、コマンドラインから実行します。
C:\ sendmail> log-event.bat 53522
もちろん、52222をEventRecordIDノードの値に置き換えます。メールを受け取ったら、幸せな場所に行ってください。
注:wevtutil.exeのコマンドラインに「アプリケーション」という文字列が数回表示されることに気づいたかもしれません。これは、カスタムビューで直接指定しても機能しないようです。カスタムビューは、すべてアプリケーションログ内にあるイベントのサブセットです。たとえば、システムログからイベントをメールで送信しようとしている場合、それを機能させるために調整する必要があります。
5)エクスポートしたXMLを編集します。次の2つの変更を行います。
まず、次の「ValueQueries」ノードを「EventTrigger」ノードの下のXMLに追加します。
<EventTrigger>
<Enabled>true</Enabled>
<Subscription>...snip...</Subscription>
<ValueQueries>
<Value name="EventRecordID">Event/System/EventRecordID</Value>
</ValueQueries>
</EventTrigger>
注:上記では、作成したカスタムビューに基づいて入力される「サブスクリプション」情報を省略しました。 「サブスクリプション」をXMLにコピーしないでください。
次に、Actionsノードを次のように置き換えます。
<Actions Context="Author">
<Exec>
<Command>C:\sendmail\mail_event.bat</Command>
<Arguments>$(EventRecordID)</Arguments>
</Exec>
</Actions>
これで、カスタムビューに新しいイベントが表示され、メール通知が自動的に届くはずです。ウフー!
Sparksが提供するリンクのドキュメントを使用して、タスクスケジューラからエクスポートされたXMLに次の追加行を追加し、イベントテキストを取得します。
<Value name="eventData">Event/EventData/Data</Value>
また興味深い(そしてできれば自明):
<Value name="eventTimeCreated">Event/System/TimeCreated/@SystemTime</Value>
私はこのグーグル「イベント/システム/イベントレコードID」を見つけました
次に、タスクで$(eventData)および$(eventTimeCreated)変数を参照できます。
XML階層をステップ実行して値が指定されているように見えます。生のXMLダンプを分解してスラッシュ区切りの式を作成することで、イベントのほとんどすべての部分を指定できると思います。
この構文では、 '/ @'はスペース文字の省略形のように見えます。
あなたはイベントデータの後ですか?
私の要件は、IISアプリケーションプールがアイドルタイムアウトのためにシャットダウンしたときはいつでもメールを送信することでした。シャットダウンしているアプリプールの名前をメールメッセージに表示する必要がありました。
これは私のために働きました:
<Value name = "appPoolId">イベント/ EventData/Data [@ Name = 'AppPoolID'] </ Value>
this を試して変数を取得するために、Server 2008またはVistaマシンにアクセスできませんが、この記事は役に立ちます。
基本的なタスクを作成してからタスクのXMLを表示すると、使用可能なすべての値が表示されます。
http://blogs.technet.com/otto/archive/2007/11/09/find-the-event-that-triggered-your-task.aspx
私はあなたのアイデアの開発を終えたと思います
<?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><QueryList><Query Id="0" Path="ForwardedEvents"><Select Path="ForwardedEvents">*</Select></Query></QueryList></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>