Я собираюсь написать какой-то сценарий для проверки средства просмотра событий на сервере Windows 2003 для всех заданий печати, а затем записать их в текстовый файл с разделителями-запятыми, например printername_floor_room.txt
Мне интересно, как лучше всего делать это в реальном времени и постоянно проверять средство просмотра событий. Какие предостережения мне нужно знать?
Спасибо
РЕДАКТИРОВАТЬ: Хорошо, поэтому я, скорее всего, выберу PowerShell и воспользуюсь Get-EventLog, а затем отредактирую данные «таблицы». У меня проблемы: если бы я сохранил все эти данные в текстовый файл, как мне получить данные из него? Файл, разделенный запятыми, с которым я мог бы работать, но в этом я не совсем уверен. И как только с этим разобрались, я все еще не уверен, как поддерживать обновление файла более или менее в реальном времени. Могу ли я сделать это сервисным, не забирая все ресурсы? Например, запускать его каждые x секунд?
РЕДАКТИРОВАТЬ 2: Поэтому я попытался добавить Фильтр событий и Потребителя с помощью инструментов WMI (то есть через графический интерфейс) на моем локальном компьютере, пытаясь заставить его правильно регистрировать мои задания печати. Похоже, мое событие было поймано, хотя что-то не так с моим скриптом, связанным с этим событием. Я дал ему отдохнуть на выходных и, вернувшись в офис, замечаю массу событий в файле wbemess.log, например:
(Пт, 30 апреля, 16:39:00 2010.112476500): запрос опроса select * из Win32_PrintJob завершился неудачно с кодом ошибки 80041033. Будет повторена попытка в следующем интервале опроса
или
(Пн, 3 мая, 09:25:23 2010.1380562): Потребитель журнала событий NT: не удалось получить sid, 0x80041002
Я также замечаю всплески использования процессора wmiprvse.exe. Немного погуглив, я обнаружил, что один парень решил свои проблемы, переустановив WMI в реестр. Мне интересно, единственный ли способ решить эту проблему. Я действительно не хочу, чтобы это происходило на нашем производственном сервере печати, когда я реализую это ...
Вы, вероятно, не захотите пытаться копаться в журналах, как администратор unix, чтобы попытаться получить последнюю информацию о состоянии принтера. Было бы неплохо, если бы вместо этого был способ получать уведомление о событии принтера. Хорошая новость в том, что в windows есть. Сначала я прочитал эту статью: Уведомлять с помощью WMI. тогда взгляни на Мониторинг событий WMI Windows PowerShell 2.0 CTP2
Я протестировал этот простой сценарий PowerShell:
$query = "Select * From __InstanceCreationEvent within .1 Where TargetInstance ISA 'Win32_printjob'"
$action = write-host "Printed Document status" (gwmi win32_printjob).status ", time" (gwmi win32_printjob).timesubmitted
register-wmievent -query $query -action $action -sourceidentifier "printerwatcher"
Вы должны получить строку вывода, когда что-то печатаете
В Powershell есть несколько хороших ловушек для этого, но в Server 2003 я верить он ограничен только местным сбором. Это также пакетный режим, а не в реальном времени, я не знаю, имеет ли это значение для вас. В Server 2008 есть более совершенные хуки для мониторинга в реальном времени.