В Task Schedule создаем задание. В Trigger — выбираем » on an event «, указываем параметры искомого события, в Action выбираем Run Program и настраиваем запуск любого простого скрипта отправки почты.
Все просто — но варианты фильтрации в разделе On an event — довольно скудные. Можно выбрать только Log, Source и EventID. И даже если выбрать расширенные настройки — все равно кардинально ничего не добавится.
Если этих параметров — хватает для фильтрации нужного события — радуйтесь, задача решена. Но если нет — то делаем так.
При создании Trigger выбирает Custom Settings, задаем базовую фильтрацию события (чтобы потом меньше писать руками) и идем во вкладку XLM
Здесь ставим галочку Edit query manually, соглашаемся что все дальше будем делать вручную, и получаем фильтр в виде XML запроса.
Правим его — на свое усмотрение, и получаем чистый, кастомный фильтр, срабатываемый только на те события, которые мы в нем указали.
ПРИМЕР:
Мне нужно было отслеживать события падения определенного приложения (nrsvr.exe) на терминальном сервере. В Evenlog это прилетает в Application Log в виде события с EventID=1000. НО проблема в том, что только по EventID отсортировать его не получается, т.к. это стандартное событие «при падении приложения» и оно также возникает если падает любое другое приложение. Нужна фильтрация по данным из Description события, иначе получим множественные ложные срабатывания
Сделать это можно вот таким XML-фильтром
<QueryList>
<Query Id="0" Path="Application">
<Select Path="Application">
*[System[Provider[@Name='Application Error'] and (EventID=1000)]] and
*[EventData[Data and (Data='nrsvr.exe')]]
</Select>
</Query>
</QueryList>
Проверить написанный XML-фильтр, можно через обычный Enet Log Viewer. Там тожеможно фильтровать события с помощью XML.
Чуть подробнее про фильтрацию с помощью XML можно почитать тут