Etkinlik değişkenlerine ilişkin Server 2008 e-postası


13

Server 2008'in yeni özelliklerinden biri, olay günlüklerindeki belirli bir olaya görev ekleme yeteneğidir. Mevcut eylemlerden biri, bir SMTP sunucusu üzerinden bir e-posta göndermektir.

Bu harika çalışıyor, ancak mesaj gövdesine Etkinlik içeriğinin yerleştirilmesi ideal olabilir. $ Eventdescription ve% eventdescription% kullanmayı denedim, ancak bunlar sadece karanlıkta çekimler. Herhangi bir miktar googling sonuç vermez.

Bunun mümkün olup olmadığını bilen var mı?

Güncelleme : Sparks'ın aşağıdaki önerisi doğru yönde bir adım olduğuna inanıyorum, ancak bu yöntem tüm değerler için işe yaramıyor gibi görünüyor. Örneğin, RecordID, Severity ve Channel'ı gösterildiği gibi çekebilirim, ancak EventID'yi veya en önemlisi açıklamayı almak için aynı yöntemi kullanamıyorum.

İşte bir olaydan ham 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]

EventData için bir ValueQuery kullanarak denedim, ancak hiçbir veri döndürür.


+1 - bunu web sunucumuzdan uyarı göndermek için kullanıyoruz ve ben de e-postada daha fazla bilgi istiyorum! Bu konuya bir göz atacağım ...
Keith Williams

Yanıtlar:


3

Bunu biraz farklı bir şekilde ele aldım, ancak bu yaklaşım, e-posta gövdesinde yer alan tüm etkinlik ayrıntılarıyla birlikte özel bir filtreyle eşleşen yeni etkinliklerde e-postalar oluşturur.

1) Olay Görüntüleyicisi'nde istediğiniz filtreyle bir 'Özel Görünüm' oluşturun.

2) Bir kez görünümünüz olduğunda, 'Bu Özel Görünüme Görev Ekle ...' bağlantısını görmelisiniz.

Ben C: \ sendmail ayıkladığım sendMail.exe ( http://caspian.dotconf.net/menu/Software/SendEmail/ ) kullanmayı seçtim . Bunun nedeni, Microsoft'un 'E-posta gönder' eyleminin SMTP kimlik doğrulamasıyla ilgili sorunları olması ve ayrıca Server 2012'de bile görünmemesi.

Benim durumumda, görevi Özel Görünüme eklerken 'Bir program başlat' seçeneğini seçtim. Ama bunu XML olarak düzenleyeceğiz, bu yüzden GUI aracılığıyla doldurma konusunda endişelenmeyin.

3) Yeni Görevi XML'e aktarın, daha sonra düzenleyeceğiz.

4) C: \ sendmail klasörü altında aşağıdaki 3 satırlı bir 'mail-event.bat' dosyası oluşturun:

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

Açıkçası, 'smtp_server', 'yerine', 'kullanıcı', 'geçiş', 'yerine', 'konu'yu istediğiniz değerlerle değiştirin.

Bu işlem, C: \ sendmail altında, o etkinliğin tüm ayrıntılarını içeren bir '$ (EventRecordID) .log' dosyası oluşturur, postalar ve sonra siler.

Toplu iş dosyasının Olay Görüntüleyicisi'ne gidip Uygulamalar günlüğünüzde bir olay açıp Ayrıntılar sekmesine geçerek, 'XML Görünümü'nü seçip Olay KaydıKimliği'ni arayarak çalışıp çalışmadığını test edebilirsiniz. Bu tamsayıyı kopyalayın ve komut satırından çalıştırın:

C: \ sendmail> log-event.bat 53522

Tabii ki, 53522 yerine EventRecordID düğümünden değer. E-postayı alırsanız mutlu yerinize gidin.

NOT İYİ: wevtutil.exe için komut satırında 'Uygulama' dizesinin birkaç kez göründüğünü fark etmiş olabilirsiniz - bunun nedeni, doğrudan Özel Görünüm'e işaret ederek çalışmasını sağlayamıyorum. Özel Görünüm, Uygulama günlüğünün içindeki olayların bir alt kümesi oldu. Örneğin, Sistem günlüğünden olayları postalamaya çalışıyorsanız, durumunuzda çalışması için bunu ayarlamanız gerekebilir.

5) Dışa aktardığınız XML'i düzenleyin, iki değişiklik yapacağız:

İlk olarak, 'EventTrigger' düğümü altındaki XML'ye aşağıdaki 'ValueQueries' düğümünü ekleyin:

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

NOT: Yukarıda, oluşturduğunuz Özel Görünüm'e göre doldurulacak 'Abonelik' bilgisini kesmiştim. 'Aboneliğimi' XML'inize kopyalamayın!

İkinci olarak, Eylemler düğümünü aşağıdaki ile değiştirin:

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

Şimdi, Özel Görünümünüzde yeni bir etkinliğin görünmesine neden olun, e-posta bildirimini otomatik olarak almalısınız! Bravo!



1

Sparks tarafından sağlanan bağlantıdaki belgeleri kullanarak etkinlik metninizi almak için Görev Zamanlayıcı'dan dışa aktarılan XML'ye bu ek satırı ekleyin:

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

Ayrıca ilginç (ve umarım açıklayıcı):

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

Bu Google çalışanını "Event / System / EventRecordID" buldum

Daha sonra görevinizdeki $ (eventData) ve $ (eventTimeCreated) değişkenlerine başvurabilirsiniz.

Değerler XML hiyerarşisinde adım adım belirtilmiş gibi görünüyor. Sizi sınırsız bir ifade oluşturmak için ham XML dökümü ayrıştırarak olayın herhangi bir bölümünü belirtmek mümkün olacağını umuyoruz.

Bu sözdiziminde bir boşluk karakteri için '/ @' kısayol gibi görünüyor.


Bunu etkinliklerime ekledim, bir sonraki DFSR çakışması olduğunda işe yarayıp yaramadığını göreceğiz. Cevabınız için teşekkürler, sizi haberdar edeceğim.
Jeff Miles

1

Etkinlik verilerinden sonra mısınız?

Benim gereksinimim, boş bir zaman aşımı nedeniyle bir IIS Uygulama Havuzu kapatıldığında bir e-posta göndermekti. Kapatılan uygulama havuzunun adının e-posta iletisinde görünmesini istedim.

Bu benim için çalıştı:

<Değer adı = "appPoolId"> Olay / EventData / Veri [@ Name = 'AppPoolID'] </Value>


1

Ben hiç bu işe almak sonunda olmadı ve Server 2012 için bu e-posta işlevselliği tamamen kaldırılmış gibi görünüyor. Ne yazık ki çıkmaz sokak.


0

Sanırım fikirlerini geliştirmeyi bitirdim

<?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>admin@nowhere.com</To>
      <From>reporter@nowhere.com</From>
      <Body>$(EventData)
$(Message)</Body>
      <HeaderFields />
      <Attachments />
    </SendEmail>
  </Actions>
</Task>

Lütfen, sadece bir kod dökümü (üç yıllık bir soru üzerine) bırakmayın, ne yaptığınızı açıklayın.
Sven
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.