Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_ЛР_БОС.doc
Скачиваний:
112
Добавлен:
08.05.2019
Размер:
1.15 Mб
Скачать

Фильтрация событий

Для осмысленного поиска по журналам мы можем использовать традиционный командлет Where-Object примером чему может послужить запрос на выборку из журнала Application событий имеющих уровень Error (Level = 2).

Get-WinEvent -logName Application -maxEvents 100 | Where-Object {$_.Level -eq 2} | Format-Table DisplayName, id, ProviderName -auto

Для удобства поиска можно использовать не одно а сразу несколько условий, это достигается благодаря использованию FilterHashTable, FilterXML или FilterXPath. Подобная фильтрация эффективнее использования командлета Where-Object, поскольку фильтры применяются во время извлечения объектов (вместо того чтобы сначала извлечь все объекты, а затем фильтровать их).

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

# используем FilterHashTable

$yesterday = (get-date) - (new-timespan -day 1)

get-winevent -FilterHashTable @{LogName=‘Security’; ID="4624"; StartTime=$yesterday} | ft TimeCreated, ID, Message

# Используем FilterXML

get-winevent -FilterXML "< QueryList >

< Query Id=’0′ Path=’Security’ >

< Select Path=’Security’ >*[System[(EventID=4624) and TimeCreated[timediff(@SystemTime) <= 86400000]]]</Select>

< / Query >

< / QueryList >"

# используем FilterXPath

Get-WinEvent -LogName Security -FilterXPath "* [ System [ (EventID=4624) and TimeCreated[timediff(@SystemTime) <= 86400000 ] ] ]"

Получение данных из файла

Данные можно получать и из сохраненных ранее файлов, для использования этой возможности необходимо только указать параметр -Path.

Get-WinEvent -Path ‘c:\ps-test\Test-Log.evtx’

Экспорт данных

В завершении остается только экспортировать полученные данные в файл. Например, в формат Csv:

Get-WinEvent -LogName Application -MaxEvents 100 | select ID,Message | Export-Csv c:\temp\Applog2.csv

Работа с удаленными компьютерами

Для работы с журналами на удаленных хостах используйте параметр -ComputerName и -Credential для указания необходимых учетных данных.

# Получаем список журналов имеющих записи.

Get-WinEvent -listlog * -ComputerName SRV01 | where {$_.recordcount}

# тоже самое только с указанием необходимых креденшелов

Get-WinEvent -listlog * -ComputerName SRV01 -Credential (Get-Credential)| where {$_.recordcount}

Для примера можно привести экспорт журналов с трех серверов. При этом надо отметить что речь идет о серверах под управлением Windows 2008 и старше. Для работы с Windows 2003 используйте командлет Get-EventLog

$list = "SRV01", "SRV02", "SRV03"

foreach ($server in $list) {

$server;

Get-WinEvent -ListLog "Windows PowerShell" -ComputerName $server | Export-Csv c:\temp\$server-log2.csv

}

3. Оборудование

Персональный компьютер с установленной операционной системой MS Windows 2000 SP4, XP SP2, Vista или 7.

4. Задание на работу

Используя Windows PowerShell, выполнить последовательность действий, описанных в теоретических положениях данной лабораторной работы:

1. Реализовать доступ и поиск событий в системных журналах.

2. Реализовать создание собственного журнала, добавление в него записей и удаление журнала.

3. Реализовать экспорт данных и очистку журнала.

4. Реализовать фильтрацию событий в системных журналах.