Скрипт журнал событий windows

Скрипт журнал событий windows

просмотр журнала событий

Иногда чтобы посмотреть появляется какая либо ошибка или событие, трудно бывает искать его среди кучи событий, можно конечно фильтровать, но проще все очистить. Чистить в ручную долго и муторно, предлагаю скрипт который почистит все журналы windows. Перед выполнением скрипта советую в просмотре событий сохранить логи windows для дальнейшего изучения, много раз было, что старые файлы оказываются, очень нужны, учитесь на чужих ошибках, а лучше их вообще не совершайте.

До очистки видим, что в логах windows много событий

Выполняем скрипт, выполнять нужно от имени администратора.

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

вот сам текст скрипта

@echo off
FOR /F «tokens=1,2*» %%V IN (‘bcdedit’) DO SET adminTest=%%V
IF (%adminTest%)==(Access) goto noAdmin
for /F «tokens=*» %%G in (‘wevtutil.exe el’) DO (call :do_clear «%%G»)
echo.
echo goto theEnd
:do_clear
echo clearing %1
wevtutil.exe cl %1
goto :eof
:noAdmin
exit

Как видите логи windows очень быстро и легко удаляются скриптом, если нужно массово зачистить вешаем его в планировщике заданий. Так же советую ознакомится с методом Как очистить просмотр событий с помощью PowerShell

Чтение журнала событий Windows

Журналы событий Windows содержат информацию о происходящих в компьютере событиях. Эта информация полезна для диагностики проблем, особенно на серверах.
Как скриптами WSH JScript/VBScript считать события и значения полей? Можно ли реагировать на события online, т.е. отправить смс администратору, автоматически перезапустить службу или сервер и пр.?

Чтение событий из журнала событий реализуется достаточно просто. Следующий скрипт считывает все события из системного журнала (System):

Скрипт выводит все события примерно в таком виде.

Аналогичный скрипт на VBScript реализуется так:

Чтобы прочитать другой журнал, например, журнал приложений (Application Log), необходимо исправить условие в строке запроса с Logfile = ‘System’ на Logfile = ‘Application’.

Возможность добавления условий фильтрации позволяет ограничить число выводимых событий:

    • По источнику события, например, запрос «SELECT * FROM Win32_NTLogEvent WHERE Logfile = ‘System’ AND SourceName = ‘SNMP’» отфильтрует события, относящиеся к SNMP.
    • По типу события, например, запрос «SELECT * FROM Win32_NTLogEvent WHERE Logfile = ‘System’ AND Type = ‘Ошибка’» выберет ошибки (для английской локализации …AND Type = ‘Error’).
    • Нумерация событий (поле RecordNumber) позволяет выполнять периодическую проверку на возникновение новых событий, добавляя к запросу условие AND RecordNumber > 13847

(подставляя номер последнего ранее считанного события).

В цикле обработки событий легко вставить, например, команды вызова внешних программ – отправки смс администратору, команды перезапуска службы или сервера и тем самым реализовать автоматическую реакцию сервера на возникающие проблемы.

Проверить, запущена ли программа

Получить список пользователей AD в bat файле

Чтение из реестра в скрипте WSH

Чтение журнала событий Windows : 3 комментария

На быстродействие оказывает влияние некоторые флаги, особенно результативен wbemFlagForwardOnly (cм. https://msdn.microsoft.com/ru-ru/library/aa393866(v=vs.85).aspx)

Читайте также:  Система папок операционной системы windows это пример

objWbemObjectSet = .ExecQuery (_
ByVal strQuery, _
[ ByVal strQueryLanguage], _
[ ByVal iFlags], _
[ ByVal objWbemNamedValueSet] _
)

iFlags [необязательно]
Integer, который определяет поведение запроса и определяет, немедленно ли этот вызов возвращается. Значением по умолчанию для этого параметра является wbemFlagReturnImmediately . Этот параметр может принимать следующие значения.
wbemFlagForwardOnly (32 (0x20))
Перечисление только в прямом направлении, как правило, намного быстрее и используют меньше памяти, чем обычные счетчики, но не разрешают вызовы SWbemObject.Clone_ .
wbemFlagBipirectional (0 (0x0))
Заставляет WMI сохранять указатели на объекты перечисления, пока клиент не освободит счетчик.
wbemFlagReturnImmediately (16 (0x10))
Заставляет вызов немедленно вернуться.
wbemFlagReturnWhenComplete (0 (0x0))
Заставляет этот вызов блокироваться, пока запрос не будет завершен. Этот флаг вызывает метод в синхронном режиме.
wbemQueryFlagPrototype (2 (0x2))
Используется для прототипирования (хз, что за тема — надо читать). Этот флаг останавливает выполнение запроса и возвращает объект, который похож на типичный объект результата.
wbemFlagUseAmendedQualifiers (131072 (0x20000))
Заставляет WMI возвращать данные о поправках класса с определением базового класса.

Последний пример, где фильтрация по «RecordNumber > 13847» работает очень медленно. Я использовал «TimeWritten > ‘….’» — принципиально лучше во всяком случае на Windows 7.

Объект WScript.Shell метод LogEvent — Журнал событий Windows

Доброго дня всем читателям блога scriptcoding.ru. В этой статье мы познакомимся с методом объекта WScript Shell – LogEvent. Данный метод позволяет заносить в журнал событий Windows информацию различного типа.

Для начала давайте кратко освежим память относительно журнала событий системы Windows.

Журнал событий Windows

Журнал событий Windows хранит информацию о любых изменениях в системе, например: успешный или неудачный вход в систему, ошибки и неполадки на диске, информация относительно работы программного и аппаратного обеспечения компьютера и так далее. Для начала стоит рассмотреть, какие основные есть типы журналов событий Windows:

  • Журнал приложений – тут хранится информация, добавленная программным путем, например, при попытке получить доступ к базе данных приложение потерпело неудачу, и записало информацию про это в журнал.
  • Журнал безопасности – В большинстве случаев тут записывается информация относительно успешного или неудачный входа в систему Windows, по сути, все, что связано с авторизацией и аутентификацией в Windows.
  • Журнал системы – Тут хранится информация, записанная системными компонентами, например, сбой при загрузке драйвера.

Хорошо, теперь давайте посмотрим, как можно просмотреть журнал событий Windows.

В первую очередь надо открыть папку Панель управления, далее открываем каталог Администрирование и Просмотр событий, но можно и по-другому, в папке Панель управления открываем Управление компьютером, в открывшемся окне нажимаем на папку Просмотр событий. Есть и третий способ, который позволяет открыть журнал событий ОС Windows из меню Пуск/Выполнить , для этого надо запустить файл-оснастку eventvwr.msc .

В самом меню журнала событий Windows разобраться несложно, поэтому, я не буду на этом зацикливаться, поэтому давайте перейдем к основной теме данной публикации.

Метод LogEvent объекта WScript.Shell по своей природе довольно просто, мы просто указывает тип сообщения и само сообщение. Стоит помнить, что в журнале событий отображаются значки для того или иного типа события.

Читайте также:  Что такое последняя версия windows store

Общий синтаксис метода следующий:

LogEvent (intType, strMessage [ ,strTarget]) – видим, что методу передаются три параметра, плюс, он возвращает true, если событие было записано, и false в противном случае.

intType – данный параметр определяет тип сообщения, он принимает целые значения:

  • 0 – Неопределенный тип, отображается значок информации (SUCCESS)
  • 1 – Сообщение об ошибке (ERROR)
  • 2 – Предупреждение (WARNING)
  • 4 – Информация (INFORMATION)
  • 8 – Аудит успехов (AUDIT_SUCCESS)
  • 16 – Аудит отказов (AUDIT_FAILURE)

strMessage – собственно, сообщение, которое будет записано в журнале событий, строковой тип.

strTarget — строка, название системы, в которой протоколируется событие (по умолчанию — локальная система), может задаваться только в Windows NT/2000/XP.

Хорошо, теперь можно приступить к программированию, мы напишем два программных кода на языке vbscript и jscript. Давайте так, для начала я приведу пример кода на языке vbscript, дам пояснения, а уже потом мы рассмотрим пример на языке программирования jscript.

Видим, прежде всего мы объявили переменную WshShell, которая будет хранить ссылку на экземпляр класса WScript.Shell, связь с объектом в языке vbscript прописывается с помощью ключевого слова set. Далее мы произвели последовательную запись информации в журнал событий Windows для каждого типа.

Стоит заметить, что я тут не проводил проверки на успех выполнения операции. Сам сценарий я запускал как под правами гостя, так и под правами администратора. Для более полной картины, стоило бы сделать проверку на ошибки. Вы конечно можете сказать: какой смысл указывать тот или иной тип события, ведь можно всегда указывать один тип? Верно, но визуально, нам проще будет, если для той или иной задачи будет определен разный тип в журнале событий ОС Windows.

Так, мы можем написать сценарий для мониторинга системы с помощью инструментарий Windows. Можно следить за каталогом с файлами, и проверять следующие события: создание в нем файлов и папок, чтение или запись, общий размер каталога и так далее.

Хорошо, теперь давайте рассмотрим аналогичный пример, но уже на языке jscript:

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

И так, мы рассмотрели работу метода LogEvent класса WScript.Shell, который позволяет довольно быстро записывать в журнал событий Windows нужные сообщения и определять тип их назначения.

Спасибо за внимание. Автор блога Владимир Баталий

Создаем собственный журнал событий в Windows

Как вы знаете, большинство «нормальных» приложений записывают свои события в журнал событий Windows (Application Event Log). Это отличное место для централизованного хранения и просмотра событий приложений, однако зачастую при возникновении необходимости журналировать события от определенного приложения в данном журнале, мы можем столкнуться с тем, что из-за большого количества и чрезмерной подробности событий, работать со стандартным журналом приложений Windows становится очень неудобно. В данном случае было бы удобно создать собственный журнал событий для данного приложения, и для него настраивать различные параметры, такие как размер журнала, фильтры и т.д., а стандартный журнал Application можно использовать как обычно, не засоряя его ненужной информацией. В ОС семейства Windows присутствует функция, позволяющая создать собственный журнал событий.

Читайте также:  Подключение сетевой карты linux

Сначала создадим новый файл журнала. Сделать это можно при помощи реестра. Запустите редактор реестра regedit и перейдите в ветку:

Щелкните правой кнопкой по узлу Eventlog и создайте новый ключ (New > Key)

Имя ключа в этом случае будет являться и именем нового журнала. По умолчанию новый журнал (файл .evt) создается тут:

Его можно переименовать, изменив строковый параметр в реестре по своему усмотрению.

Далее нужно добавить источники (Sources) событий для нового журнала. Создайте новый ключ типа Multi-String с именем “Sources”, в качестве параметров укажите имена всех приложений, который будут использовать данный журнал (каждое приложение с новой строки).

Затем нужно перенести ассоциации ваших приложений из стандартного журнала Application в ваш новый журнал. Разверните ветку “Application”, находящуюся по адресу:

И скопируйте все ветки, которые относятся к интересуемым Вами приложениям в новый ветку реестра нового журналa:

Т.к. команда скопировать/вставить в редакторе реестра не работает, их можно пересоздать вручную (если их немного), или же можно осуществить перенос при помощи процедуры экспорта/импорта веток реестра с ручным редактирование .reg файла. Убедитесь, что после переноса вы удалили ключи реестра ваших приложений из ветки Application, иначе Windows не поймет, что нужно писать события в новый журнал. В том случае, если вы используете новый источник событий для журнала, нужно будет создать параметр типа DWORD с именем CustomSource и значением равным 1:

В моем примере, я создал собственное приложение .NET 2.0, причем я хочу, чтобы оно записывало события в созданный нами журнал. Для этого я создам новый ключ реестра EventMessageFile и укажу в нем путь к библиотеке журналирования.NET 2.0:

Затем нужно перезагрузить Windows, а после загрузки системы вы увидите новый журнал событий в разделе Event Viewer-а. В том случае, если ваше приложение по какой-либо причине не пишет событий в новый журнал, можно протестировать его работу вручную, откройте командую строку и перейдите в каталог:

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

Update:

Небольшое обновление статьи по письмам читателей:

Вышеприведенная инструкция по созданию собственного журнала ориентирована на серверные ОС семейства Microsoft. Более общий способ, который должен работать в большинстве Windows следующий (отличаются пути в реестре и ключи):

Создаем новый раздел в реестре (имя раздела — имя создаваемого журнала), путь к созданному будет таким:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\NewEventLog , в котором нужно создать следующие ключи:

  • «AutoBackupLogFiles» — тип DWORD, создавать или нет резервные копии журнала (0 — не создавать)
  • «MaxSize» -тип DWORD, максимальны размер журнала в байтах, значение должно быть кратным 64Кб
  • «Retention» — тип DWORD, время хранения записей в случае переполнения журнала.
  • «File» — тип REG_EXPAND_SZ, строка, в которой содержится путь к логу журнала на жестком диске, например %SystemRoot%\System32\config\NewEventLog.evt)
  • «Sources»- тип REG_MULTI_SZ, здесь указан список источников событий, чьи логи должны попадать в этот журнал, каждый источник с новой строки
Оцените статью