Назад | Перейти на главную страницу

Как получить информацию журнала событий в электронном письме с запланированной задачей?

У меня есть запланированная задача, которая отправляет электронное письмо, когда что-то происходит с приложением. Теперь я хочу отправить подробную информацию о мероприятии также по электронной почте. Как это сделать?

В Windows Server 2008 R2 с планировщиком задач.

Это не единственный способ добиться этого. На самом деле есть гораздо лучший способ, который работает, по крайней мере, в Windows Server 2008:

http://www.buit.org/2009/07/16/event-based-triggered-tasks/

Подводя итог, вам необходимо экспортировать определение задачи в xml, добавить несколько запросов xpath для данных, которые вы хотите в текстовом редакторе, обновить командную строку, а затем импортировать обновленное определение задачи обратно в планировщик задач.

После экспорта откройте XML-файл и найдите узел <EventTrigger>.

Создать дочерний узел <ValueQueries>

<ValueQueries>
    <Value name="EventID">Event/System/EventRecordID</Value>
    <Value name="Channel">Event/System/Channel</Value>
</ValueQueries>

Затем вы можете ссылаться на эти данные запроса значения в командной строке с помощью $ (EventID) и $ (Channel). Из моих тестовых событий электронной почты эти значения не заменяются правильно. Вместо этого вам нужно выполнить командную строку. Конечно, вы можете добавить запросы xpath к любым данным в мероприятии, и это всего лишь примеры.

Вы также можете столкнуться с некоторыми проблемами при передаче определенных данных из этих запросов данных в командную строку (различные символы, включая кавычки, косые черты и т. Д., Могут конфликтовать со специальными символами в вашем интерпретаторе команд). Чтобы смягчить это, я использовал два параметра, определенные выше, а затем получил оставшиеся данные о событии с помощью wevtutil:

wevtutil qe "$(Channel)" /q:"*[System[(EventREcordID=$(EventID)]]" /f:xml

затем вы можете делать то, что хотите, с полным xml-текстом записи события, которая сгенерировала предупреждение (например, отправить электронное письмо, проанализировать xml и т. д.)

например, вы можете определить в своей задаче следующее действие, чтобы записать событие xml на диск:

<Exec>
    <Command>powershell.exe</Command>
    <Arguments>start-transcript -path C:\alertlog.log -append; add-content -path C:\output.txt -value (wevtutil qe "$(Channel)" /q:"*[System[(EventRecordID=$(EventID))]]" /f:xml); stop-transcript;</Arguments>
</Exec>

В упомянутом сообщении в блоге содержится более подробная информация.

Единственный способ добиться этого - это обходной путь (на мой взгляд). Вам нужно будет создать два действия для вашей задачи. Шаги следующие:

  1. Событие инициировано
  2. Первое действие запускает запрос интересующей вас информации о событии и сохраняет их в файл.
  3. Второе действие прикрепляет сведения о событии, сохраненные на шаге 2, к электронному письму и отправляет его.

Процесс подробно описан здесь: http://blogs.technet.com/b/jhoward/archive/2010/06/16/getting-event-log-contents-by-email-on-an-event-log-trigger.aspx