А АFriday, 21 March 2025

Запись и чтение событий в журнал Event Viewer

undercons
Привет всем.

Пожалуй вы в курсе, что вместо использования текстовых лог файлов в скриптах, можно записывать информацию о событиях Windows непосредственно в журналы Event Viewer. Ниже мы рассмотрим, как записывать логи в журналы событий Windows из скрипта PowerShell или из командной строки.

Я бы добавил что использование командлетов Write-EventLog и Get-WinEvent вам наверняка не в новость, но организация отдельного журнала событий точно будет полезна.

Итак, для записи информации в журнал событий используется командлет Write-EventLog. Например, что записать информационного событие в журнал Application, выполните:

Write-EventLog -LogName Application -Source "Application" -EntryType Information -EventID 1 -Message "PS1 Script started"

Можно добавить отдельный источник событий в существующий журнал:

New-EventLog -LogName Application -Source "MyScripts"

Теперь можно записывать события с собственным источником:

Write-EventLog -LogName Application -Source "MyScripts" -EntryType Warning –EventID 1 –Message "PS1 Script started"


Откройте консоль журнала событий (eventvwr.msc), разверните журнал Application и проверьте, что новое событие с вашим описанием было добавлено в лог.

Write-EventLog - записать событие в Event Viewer из PowerShell

write-eventlog-zapisat-sobytie-v-event-viewer-i

В качестве типа события в EntryType можно указывать Error, Information, FailureAudit, SuccessAudit или Warning.

Если вы хотите добавить в журнал событие из BAT/CMD скрипта по старинке, то нужно использовать команду eventcreate:

eventcreate /t information /l application /id 1 /d "BAT script started"


Но можно создать для ваших логов и отдельный журнал событий. Его можно создать с помощью команды New-EventLog:

New-EventLog -LogName CustomPSLog -source 'MyScripts','Function1','Function2','Function3'

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

If ([System.Diagnostics.EventLog]::SourceExists(‘CustomPSLog’) -eq $False) {

New-EventLog -LogName CustomPSLog -Source ….}

Чтобы новый журнал появиля в графической консоли Event Viewer, в него нужно отправить хотя бы одно событие (лучше пишите его при создании журнала):

Write-EventLog -LogName CustomPSLog -Source MyScripts -EntryType Information -EventID 1 -Message "Test"

Новый журнал появится в корне раздела Applications and Services Logs. Для файла журнала будет создан новый EVTX файл в папке %SystemRoot%\System32\Winevt\Logs .


Для поиска и фильтрации событий в журналах Event Viewer используется командлет Get-WinEvent. Вывести список последних 5-ти событий в вашем журнале:

Get-WinEvent -FilterHashtable @{logname='CustomPSLog';id=1}|ft TimeCreated,Id,Message | Select-Object -First 5

filtraciya-sobytij-v-event-viewer-cherez-get-wineve

Для записи в журналы событий Windows с помощью командлета Write-EventLog нужны права администратора. Под пользователем без прав администратора можно записать события только в кастомные журналы Event Viewer, созданные администратором.

Удачи.

No comments:

Post a Comment

А что вы думаете по этому поводу?

Версия на печать

Популярное