|
Введение
В первой части цикла статей, посвященных оснастке консоли управления Microsoft Windows – «Просмотр событий» рассказывалось о самой концепции программы «Просмотр событий», о большинстве журналов, которые делятся на журналы Windows и журналы приложений и служб, были описаны свойства событий и рассматривались простейшие операции, которые можно проводить над журналами. Были описаны принципы работы с просмотром событий, очисткой журнала событий, установкой максимального размера для конкретного журнала и прочее. Вторая часть статьи имеет более административный характер и в основном предназначена для администраторов клиентских/серверных операционных систем и для опытных пользователей, которые хотят научиться отлавливать и исправлять ошибки системы и приложений. Во второй части статьи рассматривались следующие аспекты: работа с настраиваемыми представлениями и фильтрацией событий, сортировка и группировка событий для выбранного журнала. Также была описана работа, связанная с подписками на события, где был кратко описан метод реализации пересылки и сбора пересылаемых событий.
Эта часть статьи адресована по большей части системным администраторам и ИТ-специалистам, которые желают научиться работать с журналами событий средствами командной строки и командной оболочкой Windows PowerShell. В этом руководстве вы сможете найти информацию об использовании командлета Get-Eventlog, утилитах Eventcreate, Wevtutil, а также Wecutil. Базовые операции с журналами WindowsВ операционной системе Windows просматривать и фильтровать события можно не только при помощи оснастки консоли управления Microsoft «Просмотр событий». Более гибкие методы просмотра и фильтрации обеспечивает командная оболочка Windows PowerShell, которая устанавливается вместе с операционной системой Windows 7. Для просмотра и фильтрации событий, сохраняемых в журналах Windows, применяется командлет Get-EventLog. Для этого командлета можно применять 14 параметров: After, AsBaseObject, AsString, Before, ComputerName, EntryType, Index, InstanceID, List, LogName, Message, Newest, Source и UserName. Нет смыла подробно описывать значения каждого из параметров, так как в этом руководстве мы будем работать только с некоторыми параметрами данного командлета. Можно только отметить, что все эти параметры предназначены для управления форматом вывода и уровнем детализации. С их помощью можно применять гибкую фильтрацию для включения или исключения событий из набора результатов. Также можно автоматизировать рутинные операции, сохранив скрипт в файл с расширением *.ps1.
Просмотр событий
Для того чтобы просмотреть события определенного журнала, в командной оболочке PowerShell введите командлет Get-EventLog, укажите название журнала, который вы хотите просмотреть и, по необходимости, задайте параметры для отображения тех или иных свойств фильтрации или столбцов для отображения событий. Например, введя командлет со следующим синтаксисом «Get-EventLog –Logname «Система», вы сможете просмотреть все события, которые создавались в журнале «Система». Если ввести команду без параметра –LogName и сразу в кавычках указать название журнала, то результат получится приблизительно таким:
На этом скриншоте отображены события журнала «Приложения» со следующими свойствами: Index (Номер), Time (Время), EntryType (Тип записи), Source (Источник), InstanceID (Код события) и Message (Сообщение). Все эти свойства событий хорошо нам известны по утилите графического интерфейса «Просмотр событий». Так же, как и в графическом интерфейсе, при помощи командной оболочки PowerShell вы можете отображать события по любым свойствам, которые доступны в утилите Get-EventLog, а также сортировать события по любому из столбцов.
Можно выводить следующие свойства событий: EventID (Код события), MachineName (Компьютер), Data, Index (Порядковый номер события), Category (Категория задач), CategoryNumber (Код категории), EntryType (Уровень), Message (Сообщение события), Source (Источник), ReplacementString, InstanceID, TimeGenerated (Дата генерации события), TimeWritten (Дата записи события), UserName (Пользователь), Site (Сайт), Conteiner (Подразделение). Для командной оболочки количество свойств меньше, нежели для утилиты «Просмотр событий», но здесь есть все те свойства, которые могут понадобиться для анализа журналов. Например, для того чтобы в командной оболочке вывести события только со столбцами «Уровень», «Дата записи события», «Источник», «Код события», «Категория» и «Сообщение события» для журнала «Система», примените следующую команду:
Get-EventLog –LogName ‘System’ | Format-Table EntryType, TimeWritten, Source, EventID, Category, Message
Для того чтобы события отобразились не в виде таблицы, а в виде списка, введите Format-List вместо Format-Table.
Фильтрация и сортировка событийПри использовании командлета Get-EventLog, командная оболочка Windows PowerShell возвращает все события в том порядке, как они были записаны в журнале, начиная от последней записи. Одним из важнейших свойств командлета Get-EventLog является возможность гибкой фильтрации и сортировки. Например, постоянно выводить все события выбранного журнала неудобно, и рано или поздно встанет задача отфильтровать журнал и вывести только ту информацию, которая действительно вам понадобится в данный момент. Одним из способов фильтрации является отображение событий за указанный промежуток времени или вывод только заданного количества последних событий. Для этого можно использовать следующие процедуры: - Вывод событий, созданных до определенного промежутка времени. Для того чтобы вывести все события, которые произошли до указанного промежутка времени, в командлете Get-EventLog воспользуйтесь параметром –Before. Например, для вывода всех событий, которые произошли не позднее 05.11.2009 года, команда будет выглядеть следующим образом:
Get-EventLog –LogName ‘System’ –Before ‘5 ноября 2009’
- Вывод событий, созданных после определенного промежутка времени. Для того чтобы вывести все события, которые произошли после указанного промежутка времени, используется параметр –After. Например, для вывода всех событий, произошедших после 02.12.2009 года, команда будет выглядеть так:
Get-EventLog –LogName ‘System’ –After ‘2 декабря 2009’
- Вывод определенного количества последних событий. Для того чтобы командлет Get-EventLog отобразил только указанное число последних событий, воспользуйтесь параметром –Newest. Например, чтобы вывести только последние 20 событий, выполните следующие действия:
Get-EventLog –Logname ‘System’ –Newest 20
- Некоторые параметры можно комбинировать. Например, если вам нужно вывести события только за октябрь 2009 года, введите следующее:
Get-EventLog –LogName ‘System’ –After ‘1 октября 2009’ –Before ’30 октября 2009’
Сортировать события можно по всем столбцам, которые выводит командлет Get-EventLog. Для этого выберите записи, которые планируете анализировать, сохранив их в переменной, а затем передайте их командлету Sort-Object, с помощью которого можно упорядочить записи событий по указанному свойству:
$event = Get-EventLog –LogName ‘System’ –Newest 200
$event | Sort-Odject –Property EventID
Группировать события можно по всем столбцам, которые выводит командлет Get-EventLog. Выберите записи, которые планируете анализировать, сохранив их в переменной, а затем передайте их командлету Group-Object, с помощью которого можно упорядочить записи событий по указанному свойству:
$event = Get-EventLog –LogName ‘System’ –Newest 200
$event | Group-Odject –Property EventID, Message
Чаще всего приходится анализировать ошибки и предупреждения, которые поступали в тот или иной журнал. При помощи фильтров можно отобразить только те события, у которых в свойстве EntryType содержится значение error. Для этого выбранные записи, сохраненные в переменную, перенаправляются командлету Where-Object, где выбираются только те записи, у которых в свойстве EntryType есть значение error, причем значение, которое указывается в командлете Where-Object к регистру не чувствительно. Поиск событий выглядит следующим образом:
$event = Get-EventLog –LogName ‘System’ –Newest 20
$event | Where-Object {$_.EntryType –match ‘error’}
Таким образом, при помощи командлета Where-Object, события можно находить абсолютно по любому свойству. В следующем примере будут отображены только те события, у которых EventID 24
$event = Get-EventLog –LogName ‘System’ –Newest 200
$event | Where-Object {$_.EventID –match ‘24’}
Настройка журналов событий средствами командной строкиНаряду с просмотром и фильтрацией журналов сообщений, с помощью командной оболочки Windows PowerShell можно задавать любые настройки для журналов событий. Управление журналами событий при помощи командной строки может сильно упростить работу в том случае, если вам нужно централизованно настроить журналы событий на всех компьютерах в предприятии, причем настраивать их можно даже удаленно. Для настройки журналов была разработана утилита командной строки Windows Events Command Line Utility, или по-другому говоря, команда Wevtutil. При помощи этой команды можно конфигурировать, очищать, архивировать, экспортировать журналы событий и выполнять множество других действий. Краткое описание утилиты WevtutilВ системной утилите Wevtutil можно использовать 12 команд и целый ряд параметров для конфигурирования и централизованного управления журналами Windows. Как команды утилиты, так и параметры команд можно вводить как в полной, так и в краткой форме. Синтаксис команды Wevtutil имеет следующий вид: Wevtutil Команда (Аргумент (/Параметр: Значение)) - Команда – обязательная инструкция для выполнения определенных действий;
- Аргумент – Аргумент команды
- Параметр – Параметр, применяемый для указанной команды. У каждой команды есть свой набор параметров
- Значение – Значение параметра
В следующей таблице отображаются все возможные команды утилиты Wevtutil: Полный вид команды | Краткий вид команды | Описание команды | Archive-log | Al | Архивирование экспортированного журнала | Clear-Log | Cl | Полная очистка журнала событий | Enum-Logs | El | Вывод списка названий журналов | Enum-publishers | Ep | Вывод списка зарегистрированных источников событий, включая системные службы | Export-log | Epl | Экспорт журнала в формате Windows Event Log (*,evtx) | Get-log | Gl | Вывод информации о конфигурации журнала | Get-log-info | Gli | Вывод сведений о состоянии журнала | Get-publisher | Gp | Вывод сведений об источнике событий | Install-manifest | Im | Установка источников и журналов событий при помощи использования манифеста | Query-events | Qe | Запрос сведений о событиях из журнала | Set-log | Sl | Изменение конфигурации журнала | Uninstall-manifest | Um | Удаление источников и журналов событий при помощи использования манифеста | Примеры использования утилиты WevtutilАрхивирование экспортированного журнала Архивировать журнал в автономный файл можно, используя команду Archive-Log. При создании архивной копии журнала, создаются и подкаталоги с выбранными локалями. Синтаксис команды: Wevtutil Archive-Log <файл_журнала> (/Locale: <локаль>)
Параметр Locale, или в краткой форме l, предназначен для указания дополнительных локалей при создании архивной копии журнала. Если этот параметр не указывать, то журнал будет заархивирован только с дефолтной локалью. Пример использования:
Wevtutil al D:\ArchLogs\System_nov2009.evtx /l: ru-RU
Очистка журнала событий Для того чтобы очистить определенный журнал событий, используется команда Clear-Log. Синтаксис команды: Wevtutil Clear-Log <имя_журнала> (/Backup: <путь>)
Параметр Backup, или в краткой форме – bu, предназначен для создания архивной копии перед очисткой журнала. Если этот параметр не указывается, то журнал очищается без сохранения. Пример использования:
Wevtutil cl Система /bu: d:\ArchLogs\System_nov2009.evtx
Вывод списка названий журналов Для того чтобы вывести список всех журналов событий, которые созданы на компьютере, применяется команда Enum-Logs. В связи с тем, что на компьютере расположено множество журналов, поиск упрощает применение команды Find. Синтаксис команд: Wevtutil Enum-Logs | find /I “Текст” Где Текст представляет собой искомую часть названия журнала. Пример использования:
Wevtutil el| find /I “PowerShell”
Вывод списка зарегистрированных источников событий Для вывода списка зарегистрированных источников событий используется команда Enum-Publishers. Совместно с этой командой предпочтительно применять команду FIND для указания точного поиска при выводе списка зарегистрированных источников событий. Синтаксис команды: Wevtutil Enum-Publishers | find “Текст” Где Текст представляет собой искомую часть названия журнала. Пример использования:
Wevtutil ep | find /I “Shell”
Экспортирование журнала событий Для экспорта журналов в файл формата Windows Event Log (*.evtx) служит команда Export-Log. Синтаксис команды: Wevtutil Export-Log <журнал> <конечный файл> (/logfile: true/false /structuredquery true/false /query <значение> /overwrite true/false) С этой командой можно использовать четыре параметра: - Параметр Logfile, или в краткой форме – lf, предназначен для того, чтобы можно было указать путь к экспортируемому файлу. Доступные значения True и False. Этот параметр опциональный.
- Параметр Structuredquery, или в краткой форме sq, указывает на то, что файл будет иметь структурированный запрос. Доступные значения True и False.
- При помощи параметра Query, или в краткой форме – q, можно воспользоваться сохраненным XPath-запросом с фильтром. Этот параметр доступен только в том случае, если значение параметра /sq – True.
- Параметр Overwrite, или в краткой форме – ow, отвечает за то, будет ли перезаписан журнал в том случае, если в папке уже присутствует файл с таким же названием. Доступные значения True и False.
Пример использования:
Wevtutil epl Система D:\ArchLogs\System_nov2009.evtx /ow: true
Вывод информации о конфигурации журнала Выводить текущую информацию о конфигурации журнала можно при помощи команды Get-Log, или в краткой форме – gl. Синтаксис команды: Wevtutil Get-Log <имя_журнала> (/Format: XML/Text) Где Имя_Журнала – это название журнала событий, для которого нужно просмотреть конфигурацию. Параметр Format, или в краткой форме – f, отвечает за формат вывода файла. По умолчанию используется текстовый формат. Если указать значением параметра XML, то информация в файле будет иметь вид XML-файла. Пример использования:
Wevtutil gl Система /f:xml
Вывод сведения о состоянии журнала Выводить сведения о состоянии журнала можно используя команду Get-Log-Info, или в краткой форме – Gli. Синтаксис этого параметра очень похож на синтаксис параметра Get-Log, а именно: Wevtutil Get-Log-Info <имя_журнала> (/Format:XML/Text) Имя_журнала и параметр Format такие же, как и у команды Get-Log. Пример использования:
Wevtutil gli Система /f:xml
Вывод сведений об источнике событий Параметры записей из источников событий можно узнать, используя команду Get-Publisher, или в краткой форме – Gp. Эта команда удобна для вывода сведений зарегистрированных источников событий созданных посторонними приложениями. Синтаксис команды следующий: Wevtutil Get-Publisher <Источник> (/Getevents: True/False /Getmessage: True/False /Format:XML/Text) Источником называется полное имя зарегистрированного источника события. При помощи параметра Getevent, или в краткой форме – ge, можно получить полный список событий, генерируемых используемым источником в виде метаданных. Доступные значения параметра True и False. При помощи параметра Getmessage, или в краткой форме – gm, можно отображать фактические сообщения, вместо цифрового идентификатора. Значение параметра Format описано выше. Пример использования:
Wevtutil gp Система /ge:true /f:xml
Установка источников и журналов, с использованием манифестов Устанавливать источники и журналы с помощью манифестов можно при помощи команды Import-Manifest, или в краткой форме – Im. Синтаксис следующий: Wevtutil Import-Manifest <путь_к_файлу> (/ResourceFilePath:<Значение> /messageFilePath:<Значение> /parameterFilePath:<Значение>)
Все три параметра отвечают за замену указанного атрибута в поставщике элементов. Значением является путь к файлу. Пример использования:
Wevtutil im Manifest.man /rf:^%systemroot%^/System32/wevtutil.exe
Запрос сведений о событиях из журнала Команда Query-Events, или в краткой форме – Qe, отвечает за просмотр текущих и архивных журналов. Синтаксис команды следующий: Wevtutil Query-Events <путь> (/logfile:True/False /Structuredquery:True/False /Query:<Значение> /Bookmark:<Значение> /Savebookmark:<Значение> /Reversedirection:True/False /Format:XML/Text /Locale:<Значение> /Count:<n> /Element:<Значение>) Параметры Logfile, Structuredquery, Query, Format, Locale аналогичны одноименным параметрам команд archive-log, export-log и get-log, С помощью параметра Bookmark, или в краткой форме – bm, можно указать полный путь к файлу, который содержит закладки из предыдущего запроса. Параметр Savebookmark, или в краткой форме – sbm, представляет собой то же самое, что и предыдущий параметр, но расширение файла должно быть *.xml. Параметр Reversedirection, или в краткой форме – rd, позволяет отображать события в обратном порядке. Если указать значение True, то последние события будут отображаться сверху. При помощи параметра Count, или в кратце – c, можно указать количество событий, которые будут отображаться при выводе команды. Пример использования:
Wevtutil qe D:\ArchLogsXML\System_nov2009.xml /sq:true /c:200 /rd:true /f:Text
Изменение конфигурации журнала Для изменения конфигурации журналов, используется команда Set-Log, или в краткой форме – Sl. Только для этой команды можно использовать 12 параметров. Синтаксис команды следующий: Wevtutil Set-log <Имя_журнала> (/Параметр:<Значение>) В этом руководстве рассматриваются лишь некоторые параметры этой команды: - При помощи параметра Enabled, в краткой форме – e, можно активировть либо деактивировть журнал.
- Параметр Quiet, в краткой форме – q, отвечает за отображение вывода команды. Если значение указано True, то после выполнения команды пользователь не будет оповещен.
- Параметр Maxsize, в краткой форме – ms, отвечает за максимальный размер файла журнала.
- С помощью параметра AutoBackup, в краткой форме – ab, можно настроить автоматическое архивирование журнала. Доступные значения True и False
- Имя файла журнала можно указать при помощи параметра LogFileName, в краткой форме – lfn.
- Уровень фильтрации журнала указывается при помощи параметра Level, в краткой форме – l, где значением параметра может быть любое доступное значение уровня.
- Фильтрацию по ключевым словам можно установить благодаря параметру Keywords, в краткой форме – k. Значение должно не превышать 64-х бит.
- Запрещать перезапись событий в указанном журнале можно с помощью параметра Retention, в кратком виде – rt. Доступные значения – True и False.
Пример изменения максимального размера в 1 Мб для журнала Приложения:
Wevtutil sl Приложения /ms:1048576
Удаление источников и журналов событий, используя манифест Удалить источник журналов событий, с использованием манифеста можно при помощи команды Uninstall-Manifest, в кратком виде – Um. Для этой команды нет параметров. Нужно только указать путь к манифесту. Пример использования:
Wevtutil um myManifest.man
Автор: Dmitry Bulanov
|
|