Пожалуй вы в курсе, что вместо использования текстовых лог файлов в скриптах, можно записывать информацию о событиях 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
В качестве типа события в 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
Для записи в журналы событий Windows с помощью командлета Write-EventLog нужны права администратора. Под пользователем без прав администратора можно записать события только в кастомные журналы Event Viewer, созданные администратором.
Удачи.
No comments:
Post a Comment
А что вы думаете по этому поводу?