Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Нужен скрипт для мониторинга событий, с условием. (http://forum.oszone.net/showthread.php?t=211301)

root221 16-07-2011 02:57 1714368

Нужен скрипт для мониторинга событий, с условием.
 
Нужен скрипт, который будет мониторить, за событиями.

Код:

Например, событие номер "7001"
Если номер события 7001 появился в списке, тогда сразуже выводится сообщение.

Код:

msg * /W "Номер события (7001) появился в журнале событий."
eventquery /l System

Вот, из этой таблицы, нужно мониторить, только за столбиком события, я этот столбик выделил, ЖИРНЫМ ширифтом, неважно, ошибка это или нет, номер события, я укажу сам.

Код:

------------------------------------------------------------------------------
  Перечисление событий в журнале 'system' для узла 'Мой комп'
------------------------------------------------------------------------------
 Тип          Событие    Дата и время            Источник        ComputerName
 ------------- ------ ------------------------ -----------------    --------------
 Ошибка        7001    01.01.2000 10:10:10  Service Control M      Мой комп


P.S. Скрипт должен, раз в минуту, обновляться

amel27 18-07-2011 11:50 1714854

всё-таки это больше задача для WSH, пример на VBS:
Код:

Set WMI = GetObject("winmgmts:{impersonationLevel=Impersonate,(Security)}!\\.\root\cimv2")
Set EVT = WMI.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent" &_
" WHERE TargetInstance ISA ""Win32_NTLogEvent"" AND TargetInstance.EventCode=7001" &_
" GROUP WITHIN 60 BY TargetInstance.EventCode")

While vbTrue
  Set obj = EVT.NextEvent
  WScript.Echo "Номер события (7001) появился в журнале событий "& obj.NumberOfEvents & " раз."
WEnd


root221 18-07-2011 12:03 1714862

ругается на 2-ю строку, отказано в доступе, источник SWbemServicesEx

root221 18-07-2011 12:57 1714927

смотрю и без vbs можно решить проблему.

Код:

for /f "skip=9" %%i in ('cscript %windir%\system32\eventquery.vbs /FI "Id eq 7001" /L system') do (msg * Ошибка 7001 появилась в файле журнала. & goto :next)
:next


root221 18-07-2011 13:18 1714936

amel27, что с vbs ? ошибку пишет ((

amel27 18-07-2011 13:38 1714944

Цитата:

Цитата root221
отказано в доступе »

да, есть такая проблема в XP (в 2003 нормально), исправил

Цитата:

Цитата root221
смотрю и без vbs можно решить проблему »

дык, это вызов "eventquery.VBS" на предмет наличия событий в журнале и без паузы, простой запрос к журналу можно выполнить без вызова VBS:
Код:

WMIC NTEVENT WHERE "LogFile='System' AND EventCode=7001" Get * /Value

Busla 18-07-2011 13:50 1714950

Да хватит некромантией заниматься: в Vista и 7 можно в планировщике заданий указать и отслеживаемое событие и назначить вывод сообщения на экран.

root221 18-07-2011 15:55 1715026

Busla,

У меня комп такие OS не потянет(

amel27, ошибка есть, сообщения нету (

amel27 18-07-2011 16:50 1715064

Цитата:

Цитата root221
ошибка есть, сообщения нету »

проверял на XPSP3 RUS и на XP Virtual Box (W7) - под админом ошибки доступа нет.
Для Event Id 26, запускаем скрипт:
Код:

WScript Test.VBS
в течение минуты выполняем несколько раз команду:
Код:

NET SEND %ComputerName% "Test Message"
примерно через минуту появляется сообщение со счетчиком


Время: 15:07.

Время: 15:07.
© OSzone.net 2001-