У меня есть запланированная задача, которая отправляет электронное письмо, когда что-то происходит с приложением. Теперь я хочу отправить подробную информацию о мероприятии также по электронной почте. Как это сделать?
В 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>
В упомянутом сообщении в блоге содержится более подробная информация.
Единственный способ добиться этого - это обходной путь (на мой взгляд). Вам нужно будет создать два действия для вашей задачи. Шаги следующие:
Процесс подробно описан здесь: http://blogs.technet.com/b/jhoward/archive/2010/06/16/getting-event-log-contents-by-email-on-an-event-log-trigger.aspx