Вопрос или проблема
У меня есть пакетный файл для сохранения журналов событий на нашем общем диске. Я хочу сделать это для XP и Server 2003 без особых усилий. Что я могу использовать, так как Wevtutil доступен только в Vista и выше?
rem Скрипт начинается здесь
rem Генератор временной метки
set BACKUP_PATH=\\shared-drive\it\Temp\Event-Logs\
rem Разбор даты (например, Чт 02/28/2013)
set cur_yyyy=%date:~10,4%
set cur_mm=%date:~4,2%
set cur_dd=%date:~7,2%
rem Разбор времени (например, 11:20:56.39)
set cur_hh=%time:~0,2%
if %cur_hh% lss 10 (set cur_hh=0%time:~1,1%)
set cur_nn=%time:~3,2%
set cur_ss=%time:~6,2%
set cur_ms=%time:~9,2%
rem Установка формата временной метки
set timestamp=%cur_yyyy%%cur_mm%%cur_dd%-%cur_hh%%cur_nn%%cur_ss%%cur_ms%
rem Установка формата имени компьютера
set servname=%computername%
wevtutil epl System %BACKUP_PATH%\%servname%_%timestamp%_system.evtx
wevtutil epl Application %BACKUP_PATH%\%servname%_%timestamp%_application.evtx
wevtutil epl Security %BACKUP_PATH%\%servname%_%timestamp%_security.evtx
rem Конец скрипта
Используйте Logevent.exe:
logevent "Это тест"
logevent -m \\server1 -s W -c 100 -r "моя пакетная программа" -e 88 "неудалось выполнить пакетную программу!"
В Windows 2003, XP и Win2K вы можете создавать, управлять и составлять отчеты о сессиях ETW двумя способами: вы можете использовать оснастку “Производительность и алерты” в Microsoft Management Console (MMC) или командные утилиты. В Windows 2003 и XP операционная система включает командные утилиты. В Win2K командные утилиты являются частью комплекта ресурсов Microsoft Windows 2000 Server и немного отличаются от тех, что в Windows 2003 и XP. В контексте архитектуры ETW оснастка “Производительность и алерты” и некоторые командные утилиты являются контроллерными приложениями. Другие командные утилиты обеспечивают функцию потребительского приложения.
Используйте один из следующих инструментов для ведения трассировок:
logman
tracelog
Ссылки
Я не верю, что то, что вы запрашиваете, можно сделать напрямую. Ближе всего, что я смог сделать, это использовать wmic для извлечения записей. Этот метод оказался ненадежным для меня в Windows 7, но, похоже, работал под Windows XP.
Пример фрагмента:
Rem В первый раз, когда выполняется WMIC, может появиться сообщение "Пожалуйста, подождите, пока WMIC устанавливается." за которым следует ответ в юникоде.
Rem cmd /a /c не работает корректно с смесью однобайтовых и многобайтовых символов в файле. Поэтому выполните первую команду дважды (или проигнорируйте проблему).
wmic os get lastbootuptime > %LogFileJunk%
wmic os get lastbootuptime > %LogFileJunk%
Rem Следующий вызов может сопровождаться фильтрами, похожими на SQL, такими как: GET * /format:csv ИЛИ GET TimeGenerated,User /format:csv
wmic NTEVENT WHERE "LogFile="security" AND TimeGenerated > %Recent%" list /format:htable > %LogFileJunk% 2>nul
dir %LogFileJunk% > NUL
for %%c in (%LogFileJunk%) do if %%~zc GTR 2 GOTO GotLog1
Echo !!!Невозможно получить!!! >> %LogFileTmp%
GOTO DoneLog1
:GotLog1
cmd /a /c type %LogFileJunk% >> %LogFileTmp%
Обратите внимание на обходные пути для wmic:
- Запустите его дважды на случай, если сообщение (ANSI) будет полезным в первый раз
- Убедитесь, что был создан реальный файл (> 2 символов)
- В моем случае мне нужно было перевести с юникода на ANSI (команда ‘type’)
Ответ или решение
Вопрос о замене Wevtutil в Windows XP и Windows Server 2003 действительно актуален, поскольку утилита Wevtutil доступна только начиная с Windows Vista. Однако в Windows XP и Windows Server 2003 вы можете воспользоваться несколькими альтернативными инструментами для работы с событиями и журналами.
Альтернативы Wevtutil
-
Logevent.exe
- Logevent.exe — это утилита, которая позволяет записывать события в системный журнал Windows. Вы можете использовать её как в интерактивном режиме, так и в пакетных файлах, что делает её отличной заменой Wevtutil для записи событий. Пример использования:
logevent "Это тестовое сообщение" logevent -m \\server1 -s W -c 100 -r "моя пакетная программа" -e 88 "не удалось выполнить пакетную программу!"
- Более подробную информацию о Logevent.exe можно найти в документации Microsoft.
- Logevent.exe — это утилита, которая позволяет записывать события в системный журнал Windows. Вы можете использовать её как в интерактивном режиме, так и в пакетных файлах, что делает её отличной заменой Wevtutil для записи событий. Пример использования:
-
WMIC (Windows Management Instrumentation Command-line)
- Вы также можете использовать
wmic
для извлечения информации о событиях. Это может быть менее надежно, но все же обеспечивает возможность получения информации из журналов:wmic NTEVENT WHERE "LogFile='Security'" GET *
- Возможно, вам потребуется обрабатывать вывод для создания отчетов или сохранения информации в файл. Убедитесь, что вы учитываете возможные проблемы с кодировкой.
- Вы также можете использовать
-
Tracing Utilities
- В Windows XP и Server 2003 доступны утилиты для трассировки, такие как
logman
иtracelog
. Эти инструменты могут помочь в создании и управлении сессиями трассировки событий. Они позволяют собирать и анализировать данные, связанные с производительностью системы. - Пример использования logman:
logman create trace MyTrace -p "MyProvider" -o "C:\MyTraceFile.etl" logman start MyTrace
- В Windows XP и Server 2003 доступны утилиты для трассировки, такие как
Советы по созданию пакетной обработки
Здесь приведен пример того, как может выглядеть ваша пакетная обработка на основе упомянутых инструментов:
@echo off
set BACKUP_PATH=\\shared-drive\it\Temp\Event-Logs\
set cur_date=%date:~10,4%%date:~4,2%%date:~7,2%
set cur_time=%time:~0,2%%time:~3,2%%time:~6,2%
:: Запись события
logevent "Запись журналов начата"
:: Получение и экспорт данных событий
wmic NTEVENT WHERE "LogFile='Application'" GET * > %BACKUP_PATH%\app_events_%cur_date%_%cur_time%.log
wmic NTEVENT WHERE "LogFile='Security'" GET * > %BACKUP_PATH%\sec_events_%cur_date%_%cur_time%.log
:: Сообщение об окончании
logevent "Запись журналов завершена"
Этот подход позволит вам создавать логи событий и контролировать их, используя более старые утилиты.
Заключение
Хотя возможности Windows XP и Server 2003 ограничены по сравнению с более новыми версиями ОС, указанные методы и утилиты предоставляют необходимые средства для работы с событиями. Правильное использование этих инструментов поможет вам сохранить и управлять логами событий на устаревших системах. Если вы ищете более подробную информацию или конкретные примеры, рекомендуется обратиться к официальной документации Microsoft.