Email Server 2008 tentang variabel Event

13

Salah satu fitur baru Server 2008 adalah kemampuan untuk melampirkan tugas ke acara tertentu di log peristiwa. Salah satu tindakan yang tersedia adalah mengirim email melalui server SMTP.

Ini bekerja dengan baik, namun akan ideal jika di badan pesan, konten acara dapat ditempatkan. Saya telah mencoba menggunakan $ eventdescription dan% eventdescription%, tetapi itu hanyalah bidikan dalam kegelapan. Berapapun jumlah googling tidak menghasilkan apa-apa.

Adakah yang tahu kalau ini mungkin?

Pembaruan : Saran Sparks di bawah ini adalah langkah ke arah yang benar saya percaya, namun metode itu tampaknya tidak berfungsi untuk semua nilai. Misalnya, saya dapat menarik RecordID, Severity, dan Channel seperti yang ditunjukkan, tetapi saya tidak dapat menggunakan metode yang sama untuk mengambil kembali EventID, atau yang paling penting deskripsi.

Berikut XML mentah dari satu acara:

[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]

Saya telah mencoba menggunakan ValueQuery untuk EventData, tetapi tidak mengembalikan data.

Jeff Miles
sumber
+1 - kami menggunakan ini untuk mengirim peringatan dari server web kami, dan saya ingin satu informasi lebih lanjut di email! Saya akan mengawasi utas ini ...
Keith Williams

Jawaban:

3

Saya melakukan hal ini sedikit berbeda, tetapi pendekatan ini menghasilkan email pada acara baru yang cocok dengan filter khusus, dengan semua detail acara termasuk dalam badan email.

1) Buat 'Tampilan Kustom' di Peraga Peristiwa dengan filter yang Anda inginkan.

2) Setelah Anda memiliki tampilan, Anda akan melihat tautan ke 'Lampirkan Tugas ke Tampilan Kustom Ini ...'.

Saya memilih untuk menggunakan sendMail.exe dari sini ( http://caspian.dotconf.net/menu/Software/SendEmail/ ) yang saya ekstrak ke C: \ sendmail. Alasannya adalah tindakan Microsoft 'Kirim email' memiliki masalah dengan otentikasi SMTP dan juga tampaknya tidak ada di Server 2012.

Jadi dalam kasus saya, saya memilih 'Mulai program' sambil melampirkan tugas ke Tampilan Kustom. Tapi kita akan mengeditnya sebagai XML jadi jangan khawatir tentang mengisinya melalui GUI.

3) Ekspor Tugas baru ke XML, kami akan mengeditnya nanti.

4) Buat file 'mail-event.bat' di bawah C: \ sendmail folder dengan 3 baris berikut:

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

Jelas, ganti 'smtp_server', 'dari', 'user', 'pass', 'to', 'subject' dengan nilai yang diinginkan.

Ini akan membuat file '$ (EventRecordID) .log' di bawah C: \ sendmail dengan semua detail untuk acara itu, kirimkan, lalu hapus.

Anda dapat menguji apakah file kumpulan bekerja dengan masuk ke Peraga Peristiwa, membuka acara di log Aplikasi Anda, beralih ke tab Detail, memilih 'Tampilan XML' dan kemudian mencari EventRecordID. Salin integer itu, dan kemudian jalankan dari baris perintah:

C: \ sendmail> log-event.bat 53522

Tentu saja, mengganti 53522 dengan nilai dari simpul EventRecordID. Jika Anda menerima email, pergi ke tempat bahagia Anda.

CATATAN BAIK: Anda mungkin telah memperhatikan string 'Aplikasi' muncul beberapa kali di baris perintah untuk wevtutil.exe - itu karena saya sepertinya tidak bisa membuatnya berfungsi dengan mengarahkan langsung ke Custom View, dan saya Tampilan Kustom kebetulan merupakan sub-set acara yang semuanya ada di dalam log Aplikasi. Anda mungkin harus menyesuaikannya agar berfungsi dalam kasus Anda jika Anda mencoba mengirimkan acara dari System log, misalnya.

5) Edit XML yang Anda ekspor, kami akan membuat dua perubahan:

Pertama, tambahkan simpul 'ValueQueries' berikut ke dalam XML di bawah simpul 'EventTrigger':

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

CATATAN: Di atas, saya memotong info 'Berlangganan' yang akan diisi berdasarkan Tampilan Kustom yang Anda buat. Jangan menyalin 'Langganan' saya ke XML Anda!

Kedua, ganti simpul Actions dengan yang berikut:

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

Sekarang, buat acara baru muncul di Tampilan Kustom Anda, dan Anda akan secara otomatis mendapatkan notifikasi email! Woo hoo!

Jeremy
sumber
1

Menggunakan dokumentasi di tautan yang disediakan oleh Sparks, tambahkan baris tambahan ini ke XML yang diekspor dari Penjadwal Tugas untuk mendapatkan teks acara Anda:

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

Juga menarik (dan mudah-mudahan cukup jelas):

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

Saya menemukan Googling ini "Event / System / EventRecordID"

Anda kemudian dapat mereferensikan variabel $ (eventData) dan $ (eventTimeCreated) dalam tugas Anda.

Tampaknya seolah-olah nilai ditentukan dengan melangkah melalui hierarki XML. Saya berharap Anda dapat menentukan sebagian besar bagian acara dengan mendekomposisi dump XML mentah untuk membuat ekspresi dibatasi garis miring.

Sepertinya '/ @' adalah kependekan dari karakter spasi dalam sintaks ini.


sumber
Baru saja menambahkan ini ke acara saya, kita akan melihat apakah itu berfungsi lain kali ada konflik DFSR. Terima kasih atas jawabannya, saya akan membuat Anda tetap diposting.
Jeff Miles
1

Apakah Anda setelah data acara?

Persyaratan saya adalah mengirim email setiap kali Pool Aplikasi IIS dimatikan karena waktu tidak digunakan. Saya ingin nama kumpulan aplikasi yang sedang ditutup muncul di pesan email.

Ini bekerja untuk saya:

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


sumber
1

Saya tidak pernah akhirnya mendapatkan ini berfungsi, dan sepertinya untuk Server 2012 fungsi email ini telah dihapus sepenuhnya. Jalan buntu sayangnya.

Jeff Miles
sumber
0

Saya kira saya selesai mengembangkan ide-ide Anda

<?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>
Tim Tsyganko
sumber
Tolong, jangan hanya membuang kode dump (pada pertanyaan tiga tahun), tetapi jelaskan apa yang Anda lakukan.
Sven