Что нового

[Event log] Почему некорректно работает запрос по параметру TimeGenerated?

Houl777

Знающий
Сообщения
38
Репутация
5
Вот рабочий запрос.
Код:
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NTLogEvent WHERE Logfile = 'Security' AND EventCode = '4625' AND TimeGenerated > '20121002 07:28:00'" )


Не работает:
1)
Код:
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NTLogEvent WHERE Logfile = 'Security' AND EventCode = '4625' AND TimeGenerated = '20121002 07:28:00'" )

Сообщение за данную дату и время имеется.
2)
Код:
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NTLogEvent WHERE Logfile = 'Security' AND EventCode = '4625' AND TimeGenerated = '20121002072800.000000-000'" )

Эта и другие вариации (000000+-240 и >,< прочие) не работают.

Хост ОС Windows 7
Требуется получить определенное событие по времени. Почему не работает запрос? _EventLog_Read () не подходит.
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Что значит некорректно? Кажет ошибку?
 
Автор
H

Houl777

Знающий
Сообщения
38
Репутация
5
Не выводит никаких сообщений.

Что я хочу получить:
В определенный промежуток времени я запускаю функцию _eventlog_read и получаю последнее сообщение из журнала eventlog. Если полученное сообщение имеет ID 4625, то я из ответа _eventlog_read выделяю время, когда данное событие произошло, и подставляю его в запрос $objWMIService.ExecQuery. После чего я могу ответ на данный запрос обработать RegExp и получить имя пользователя, имя рабочей станции, IP и прочее.

Что я получаю:
В рабочем запросе - выводит все сообщения от, включительно, указанного временного штампа.

Мне нужно, чтобы выводилось конкретное сообщение по указанному временному штампу (варианты 1 и 2). И удивляет, что не работает формат времени по WMI, хотя все примеры, которые я видел, были с ним.
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
TimeGenerated = '20121004003033.000000+240' - так работает.
 
Автор
H

Houl777

Знающий
Сообщения
38
Репутация
5
Бред какой-то :stars: со знаком > работает с = не работает (ставлю время моего события). Дома еще попробую.
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
$res=''
$obj = ObjGet("WinMgmts:\\.\root\cimv2")
$que= $obj.ExecQuery _
("SELECT * FROM Win32_NTLogEvent WHERE Logfile = 'Security' AND EventCode = '4625' AND TimeGenerated > '20121002 07:28:00'")
For $o in $que
	$res&=$o.TimeGenerated&@CRLF
Next
MsgBox(0,'',$res)

Посмотри какой формат у времени событий и сравнивай в том же.
 
Автор
H

Houl777

Знающий
Сообщения
38
Репутация
5
Пробовал.
Вот я сгенерировал событие: 20121004094656.071152-000. Сегодня 4 октября 2012 в 16.46....
Если искать от определенной даты, то оно находится. Если ставлю знак =, то ничего не выдается. Может как-то неверно отрабатывается цикл.
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
У тебя что-то с часовыми поясами - 20121004094656.071152-000 - здесь 4 октября, 09:46:56.
 
Автор
H

Houl777

Знающий
Сообщения
38
Репутация
5
Проверил на 2-х других ПК. Везде Windows 7 x64 Rus. Не работает. :'(
Пока решил ограничиться Exitloop.
 
Верх