it-swarm-ko.tech

이벤트 변수에 대한 Server 2008 이메일

Server 2008의 새로운 기능 중 하나는 이벤트 로그의 특정 이벤트에 작업을 첨부하는 기능입니다. 사용 가능한 작업 중 하나는 SMTP 서버를 통해 이메일을 보내는 것입니다.

이것은 훌륭하게 작동하지만 메시지 본문에 이벤트 내용을 배치 할 수 있다면 이상적입니다. $ eventdescription 및 % eventdescription %을 사용해 보았지만 어둠 속에서 촬영 한 것입니다. 인터넷 검색의 양에 관계없이 결과가 생성되지 않습니다.

이것이 가능한지 아는 사람이 있습니까?

업데이트 : 아래 Sparks의 제안은 올바른 방향으로 나아가는 단계이지만 그 방법이 모든 값에 대해 작동하지 않는 것 같습니다. 예를 들어, 표시된대로 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]

EventData에 ValueQuery를 사용해 보았지만 데이터를 반환하지 않습니다.

13
Jeff Miles

나는 이것이 작동하도록 끝내지 않았으며 Server 2012 에서이 이메일 기능이 완전히 제거 된 것 같습니다. 불행히도 막 다른 골목.

1
Jeff Miles

나는 이것에 대해 조금 다르게 진행했지만,이 접근법은 이메일 본문에 모든 이벤트 세부 사항이 포함 된 사용자 정의 필터와 일치하는 새 이벤트에 대한 이메일을 생성합니다.

1) 원하는 필터로 이벤트 뷰어에서 '사용자 정의보기'를 만듭니다.

2)보기가 있으면 '이 사용자 지정보기에 작업 연결 ...'링크가 표시됩니다.

C :\sendmail에 압축을 푼 여기 ( http://caspian.dotconf.net/menu/Software/SendEmail/ )에서 sendMail.exe를 사용하기로 선택했습니다. 그 이유는 Microsoft의 '이메일 보내기'작업에 SMTP 인증에 문제가 있고 서버 2012에도없는 것 같습니다.

그래서 제 경우에는 작업을 사용자 정의보기에 연결하면서 '프로그램 시작'을 선택했습니다. 그러나 우리는 그것을 XML로 편집 할 것이므로 GUI를 통해 채우는 것에 대해 걱정하지 마십시오.

3) 새 태스크를 XML로 내보내십시오. 나중에 편집 할 것입니다.

4) C :\sendmail 폴더 아래에 다음 세 줄로 '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'를 원하는 값으로 바꿉니다.

그러면 해당 이벤트에 대한 모든 세부 정보가 포함 된 '$ (EventRecordID) .log'파일이 C :\sendmail 아래에 생성되고 메일로 전송 된 다음 삭제됩니다.

이벤트 뷰어로 이동하여 애플리케이션 로그에서 이벤트를 열고 세부 정보 탭으로 전환하고 'XML보기'를 선택한 다음 EventRecordID를 찾아 배치 파일이 작동하는지 테스트 할 수 있습니다. 해당 정수를 복사 한 다음 명령 줄에서 실행합니다.

C :\sendmail> log-event.bat 53522

물론 53522를 EventRecordID 노드의 값으로 대체합니다. 이메일을 받으면 행복한 곳으로 가십시오.

참고 : wevtutil.exe의 명령 줄에 'Application'문자열이 몇 번 표시되는 것을 눈치 채 셨을 것입니다. 이는 사용자 지정보기에서 직접 지정하여 작동하도록 할 수 없었기 때문입니다. 사용자 정의보기는 응용 프로그램 로그 내에있는 이벤트의 하위 집합이었습니다. 예를 들어, 시스템 로그에서 이벤트를 메일로 보내려고하는 경우에 작동하도록 조정해야 할 수 있습니다.

5) 내 보낸 XML을 편집합니다. 두 가지 사항을 변경합니다.

먼저 'EventTrigger'노드 아래의 XML에 다음 'ValueQueries'노드를 추가합니다.

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

이제 새 이벤트가 사용자 정의보기에 나타나도록하면 자동으로 이메일 알림을 받게됩니다! 우후!

3
JeremyS

Sparks에서 제공하는 링크의 설명서를 사용하여 작업 스케줄러에서 내 보낸 XML에 다음 줄을 추가하여 이벤트 텍스트를 가져옵니다.

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

또한 흥미롭고 자명하기를 바랍니다.

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

이 인터넷 검색 "Event/System/EventRecordID"를 찾았습니다.

그런 다음 작업에서 $ (eventData) 및 $ (eventTimeCreated) 변수를 참조 할 수 있습니다.

XML 계층을 단계별로 수행하여 값이 지정된 것처럼 보입니다. 슬래시로 구분 된 표현식을 생성하기 위해 원시 XML 덤프를 분해하여 이벤트의 대부분의 부분을 지정할 수 있기를 기대합니다.

이 구문에서 '/ @'는 공백 문자의 속기 인 것처럼 보입니다.

1
Kirk Patten

이벤트 데이터를 찾으십니까?

내 요구 사항은 IIS 유휴 시간 초과로 인해 응용 프로그램 풀이 종료 될 때마다 전자 메일을 보내는 것이 었습니다. 종료되는 응용 프로그램 풀의 이름이 전자 메일 메시지에 나타나기를 원했습니다.

이것은 나를 위해 일했습니다.

<Value name = "appPoolId"> 이벤트/이벤트 데이터/데이터 [@ Name = 'AppPoolID'] </ Value>

1
Mr Helpful

this 직접 시도하고 변수를 가져 오기 위해 Server 2008 또는 Vista 시스템에 액세스 할 수 없지만이 기사는 유용합니다.

기본 작업을 만든 다음 작업의 XML을 보면 사용 가능한 모든 값이 표시되어야합니다.

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

1
sclarson

나는 당신의 아이디어를 개발 한 것 같아요

<?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>
0
Tim Tsyganko