Get-WinEvent
Получает события из журналов событий и файлов журналов отслеживания событий, находящихся на локальном компьютере и на удаленных компьютерах.
Синтаксис
Get-WinEvent [-LogName] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]
Get-WinEvent [-Path] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]
Get-WinEvent [-ProviderName] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]
Get-WinEvent -FilterHashTable <Hashtable[]> [-ComputerName <string>] [-Credential <PSCredential>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]
Get-WinEvent [-ListLog] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [<CommonParameters>]
Get-WinEvent [-ListProvider] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [<CommonParameters>]
Get-WinEvent -FilterXml <XmlDocument> [-ComputerName <string>] [-Credential <PSCredential>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]
Описание
Командлет Get-WinEvent получает события из журналов событий, включая классические журналы событий, такие как журналы системы и приложений, и журналы событий, создаваемые с помощью новой технологии журнала событий Windows, реализованной в Windows Vista. Он также получает события из файлов журналов, созданных средством отслеживания событий для Windows (ETW).
При вызове без параметров команда Get-WinEvent получает все события из журналов событий компьютера. Чтобы прервать выполнение команды, нажмите сочетание клавиш CTRL+C.
Кроме того, командлет Get-WinEvent создает список журналов событий и поставщиков журналов событий. События можно получать из выбранных журналов или журналов, созданных определенными поставщиками событий. В одной команде можно объединять события из различных источников. Командлет Get-WinEvent позволяет фильтровать события с помощью запросов XPath, структурированных XML-запросов и упрощенных запросов хэш-таблицы.
Примечание. Командлет Get-WinEvent работает только в Windows Vista, Windows Server 2008 R2 и последующих версиях Windows. Кроме того, требуется платформа Microsoft .NET Framework 3.5 или более поздней версии.
Параметры
-ComputerName <string>
Получает события из журналов событий на указанном компьютере. Введите NetBIOS-имя, IP-адрес или полное доменное имя компьютера. По умолчанию используется значение "Локальный компьютер".
Этот параметр одновременно принимает только одно имя компьютера. Чтобы найти журналы событий или события на нескольких компьютерах, воспользуйтесь инструкцией ForEach. Дополнительные сведения о данном параметре см. в примерах.
Чтобы получать журналы событий и события с удаленных компьютеров, порт брандмауэра для службы ведения журнала должен быть открыт для удаленного доступа.
Этот параметр не использует удаленное взаимодействие Windows PowerShell. Параметр ComputerName можно использовать, даже если компьютер не настроен на выполнение удаленных команд.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Credential <PSCredential>
Задает учетную запись пользователя, который располагает разрешением для выполнения этого действия. По умолчанию используется значение "Текущий пользователь".
Введите имя пользователя, например User01 или Domain01\User01. Или укажите объект PSCredential, например один из объектов, созданных командлетом Get-Credential. При вводе имени пользователя система запросит пароль. Если указано только имя параметра, командлет запросит имя пользователя и пароль.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
Текущий пользователь |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-FilterHashTable <Hashtable[]>
Использует запрос в формате хэш-таблицы для выбора событий из одного или нескольких журналов событий. Запрос содержит хэш-таблицу с одной или несколькими парами "ключ-значение".
К запросам в виде хэш-таблицы применяются следующие правила:
-- Ключи и значения обрабатываются без учета регистра.
-- Подстановочные знаки допускаются только в значениях, связанных с ключами LogName и ProviderName.
-- Каждый ключ может использоваться в каждой хэш-таблице только один раз.
-- Значение Path получает пути к файлам журналов ETL, EVT и EVTX.
-- Ключи LogName, Path и ProviderName можно использовать в одном запросе.
-- Ключ UserID может получать допустимый идентификатор безопасности (SID) или имя учетной записи домена, которое можно использовать для создания допустимого объекта System.Security.Principal.NTAccount.
-- Значение Data получает данные события в неименованном поле. Это поле используется для событий в классических журналах событий.
-- Ключ * представляет именованное поле данных событий.
Если командлету Get-WinEvent не удается интерпретировать пару "ключ-значение", ключ интерпретируется с учетом регистра как имя данных события в событии.
Допустимые пары "ключ-значение":
-- LogName=<String[]>
-- ProviderName=<String[]>
-- Path=<String[]>
-- Keywords=<Long[]>
-- ID=<Int32[]>
-- Level=<Int32[]>
-- StartTime=<DateTime>
-- EndTime=<DataTime>
-- UserID=<SID>
-- Data=<String[]>
-- *=<String[]>
Обязательно? |
true |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
true (ByValue) |
Принимать подстановочные знаки? |
false |
-FilterXml <XmlDocument>
Использует структурированный XML-запрос для выбора событий из одного или нескольких журналов событий.
Для создания допустимого XML-запроса следует использовать функции "Создать настраиваемое представление" и "Фильтровать текущий журнал" средства просмотра событий. Используйте эти функции в диалоговом окне для создания запроса, а затем перейдите на вкладку "XML" для просмотра запроса в формате XML. XML-запрос можно скопировать с вкладки "XML" и вставить в значение параметра FilterXml. Дополнительные сведения о возможностях средства просмотра событий см. в справке средства просмотра событий.
Как правило, XML-запросы используются для создания сложных запросов, содержащих несколько инструкций XPath. Кроме того, формат XML позволяет использовать XML-элемент "Suppress", который исключает события из запроса. Дополнительные сведения о схеме XML для запросов журнала событий см. в указанных ниже разделах библиотеки MSDN (Microsoft Developer Network).
-- "Схема запроса": https://go.microsoft.com/fwlink/?LinkId=143685
-- "Запросы событий XML" в разделе "Выбор событий": https://go.microsoft.com/fwlink/?LinkID=143608
Обязательно? |
true |
Позиция? |
named |
Значение по умолчанию |
Нет |
Принимать входные данные из конвейера? |
true (ByValue) |
Принимать подстановочные знаки? |
false |
-FilterXPath <string>
Использует запрос XPath для выбора событий из одного или нескольких журналов.
Дополнительные сведения о языке XPath см. в разделе "Фильтры выбора" раздела "Выбор событий" и в разделе "Справочник по XPath" в библиотеке MSDN.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
Нет |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Force <switch>
Получает журналы отладки и аналитики в дополнение к другим журналам событий. Параметр Force необходим для получения журнала отладки или аналитики, если значение параметра Name включает подстановочные знаки.
По умолчанию командлет Get-WinEvent не обрабатывает эти журналы, если не указано полное имя журнала отладки или журнала аналитики.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
Журналы отладки и аналитики не возвращаются в ответ на запросы с использованием подстановочных знаков. |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-ListLog <string[]>
Получает заданные журналы событий. Введите имена журналов событий, разделенные запятыми. Подстановочные знаки разрешены. Чтобы получить все журналы, введите значение *.
Обязательно? |
true |
Позиция? |
1 |
Значение по умолчанию |
Нет |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
true |
-ListProvider <string[]>
Получает список заданных поставщиков журналов событий. Поставщик журнала событий — это программа или служба, которая записывает события в журнал событий.
Введите имена поставщиков, разделенные запятыми. Подстановочные знаки разрешены. Чтобы получить список поставщиков всех журналов событий, имеющихся на компьютере, введите значение *.
Обязательно? |
true |
Позиция? |
1 |
Значение по умолчанию |
Нет |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
true |
-LogName <string[]>
Получает события из заданных журналов событий. Введите имена журналов событий, разделенные запятыми. Подстановочные знаки разрешены. Кроме того, можно передать имена журналов в Get-WinEvent с помощью конвейера.
Обязательно? |
true |
Позиция? |
1 |
Значение по умолчанию |
Нет |
Принимать входные данные из конвейера? |
true (ByValue) |
Принимать подстановочные знаки? |
true |
-MaxEvents <int64>
Задает максимальное число событий, возвращаемых Get-WinEvent. Введите целое число. По умолчанию возвращаются все события во всех журналах и файлах.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
Все события |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Oldest
Возвращает события в порядке от старых к новым. По умолчанию события возвращаются в порядке от новых к старым.
Это параметр необходим для получения событий из ELT- и EVT-файлов, а также из журналов отладки и аналитики. В этих файлах события регистрируются в порядке от старых к новым и могут быть возвращены только в этом порядке.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Path <string[]>
Получает события из заданных файлов журналов событий. Введите пути к файлам журналов, разделенные запятыми, или используйте подстановочные знаки для ввода шаблонов путей файлов.
Командлет Get-WinEvent поддерживает файлы с расширениями EVT, EVTX и ETL. В одной команде можно объединять события из различных файлов и типов файлов.
Обязательно? |
true |
Позиция? |
1 |
Значение по умолчанию |
Нет |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
true |
-ProviderName <string[]>
Возвращает события, записанные указанными поставщиками журналов событий. Введите имена поставщиков, разделенные запятыми, или используйте подстановочные знаки для ввода шаблонов имен поставщиков.
Поставщик журнала событий — это программа или служба, которая записывает события в журнал событий. Такой поставщик не является поставщиком Windows PowerShell.
Обязательно? |
true |
Позиция? |
1 |
Значение по умолчанию |
Нет |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
true |
<CommonParameters>
Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.
Ввод и вывод
Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.
Входные данные |
System.String, System.Xml.XmlDocument, System.Collections.Hashtable. Параметр LogName (строка), запрос FilterXML и запрос FilterHashTable можно по конвейеру передать в командлет Get-WinEvent. |
Выходные данные |
System.Diagnostics.Eventing.Reader.EventLogConfiguration, System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diagnostics.Eventing.Reader.ProviderMetadata С параметром ListLog команда Get-WinEvent -Listlog возвращает объекты System.Diagnostics.Eventing.Reader.EventLogConfiguration. С параметром ListProvider команда Get-WinEvent возвращает объекты System.Diagnostics.Eventing.Reader.ProviderMetadata. При использовании всех других параметров командлет Get-WinEvent возвращает объекты System.Diagnostics.Eventing.Reader.EventLogRecord. |
Примечания
Командлет Get-WinEvent заменяет командлет Get-EventLog на компьютерах под управлением Windows Vista и более поздних версий Windows. Командлет Get-EventLog получает события только из классических журналов событий. Командлет Get-EventLog сохранен в Windows PowerShell 2.0 для операционных систем, предшествующих Windows Vista.
Пример 1
C:\PS>get-winevent -listlog *
Описание
-----------
Эта команда получает все журналы, имеющиеся на локальном компьютере.
Журналы указаны в порядке их получения командлетом Get-WinEvent. Как правило, сначала извлекаются классические журналы, а затем — новые журналы обработки событий Windows.
Поскольку обычно используется более сотни журналов событий, для этого параметра требуется имя журнала или шаблон имени. Чтобы получить все журналы, используйте значение *.
Пример 2
C:\PS>get-winevent -listlog Setup | format-list -property *
FileSize : 69632
IsLogFull : False
LastAccessTime : 2/14/2008 12:55:12 AM
LastWriteTime : 7/9/2008 3:12:05 AM
OldestRecordNumber : 1
RecordCount : 3
LogName : Setup
LogType : Operational
LogIsolation : Application
IsEnabled : True
IsClassicLog : False
SecurityDescriptor : O:BAG:SYD:(A;;0xf0007;;;SY)(A;
(A;;0x1;;;S-1-5-32-573)
LogFilePath : %SystemRoot%\System32\Winevt\L
MaximumSizeInBytes : 1052672
LogMode : Circular
OwningProviderName : Microsoft-Windows-Eventlog
ProviderNames : {Microsoft-Windows-WUSA, Micro
ProviderLevel :
ProviderKeywords :
ProviderBufferSize : 64
ProviderMinimumNumberOfBuffers : 0
ProviderMaximumNumberOfBuffers : 64
ProviderLatency : 1000
ProviderControlGuid :
Описание
-----------
Эти команды получают объект, представляющий классический системный журнал на локальном компьютере. Объект содержит сведения о журнале, в том числе: размер журнала, поставщик журнала событий и путь к файлу, а также индикатор того, включен ли журнал.
Пример 3
C:\PS>get-winevent -listlog * -computername Server01| where {$_.recordcount}
Описание
-----------
Эта команда извлекает только журналы событий на компьютере Server01, содержащие события. Многие журналы могут быть пустыми.
Эта команда использует свойство RecordCount объекта EventLogConfiguration, возвращаемого командлетом Get-WinEvent при использовании параметра ListLog.
Пример 4
C:\PS>$s = "Server01", "Server02", "Server03"
C:\PS> foreach ($server in $s)
{$server; get-winevent -listlog "Windows PowerShell" -computername $server}
Описание
-----------
В данном примере команда извлекает объекты, представляющие журналы событий Windows PowerShell на трех компьютерах: Server01, Server02 и Server03. В команде используется ключевой слово Foreach, так как параметр ComputerName принимает только одно значение.
Первая команда сохраняет имена компьютеров в переменной $s.
Во второй команде используется инструкция Foreach. Для каждого из компьютеров, указанных в переменной $s, выполняется команда в блоке скрипта (в фигурных скобках). Сначала команда выводит имя компьютера. Затем она выполняет команду Get-WinEvent для получения объекта, представляющего журнал Windows PowerShell.
Пример 5
C:\PS>get-winevent -listprovider *
Описание
-----------
Эта команда получает список поставщиков журналов событий на локальном компьютере и журналов, в которые они выполняют запись (если есть).
Пример 6
C:\PS>(get-winevent -listlog Application).providernames
Описание
-----------
Эта команда возвращает всех поставщиков, которые выполняют запись в журнал приложений на локальном компьютере.
Пример 7
C:\PS>>get-winevent -listprovider *policy*
Описание
-----------
Эта команда возвращает поставщиков журналов событий, имена которых содержат слово "policy".
Пример 8
C:\PS>(get-winevent -listprovider microsoft-windows-grouppolicy).events | format-table id, description -auto
Описание
-----------
Эта команда возвращает список идентификаторов событий, созданных поставщиком событий Microsoft-Windows-GroupPolicy, и соответствующих описаний событий.
В ней используется свойство Events объекта, возвращаемого командлетом Get-WinEvent при использовании параметра ListProvider, а также свойства ID и Description объекта в свойстве Events.
Пример 9
C:\PS>$events = get-winevent -logname "Windows PowerShell"
C:\PS> $events.count
195
C:\PS> $events | group-object id -noelement | sort-object count -desc
Count Name
----- ----
147 600
22 400
21 601
3 403
2 103
C:\PS> $events | group-object leveldisplayname -noelement
Count Name
----- ----
2 Warning
193 Information
Описание
-----------
В этом примере показано, как с помощью свойств объектов событий, возвращенных командлетом Get-WinEvent, получить сведения о событиях в журнале событий.
Первая команда с помощью командлета Get-WinEvent возвращает все события в журнале событий Windows PowerShell. После этого они сохраняются в переменной $events. Имя журнала заключено в кавычки, поскольку оно содержит пробел.
Вторая команда использует свойство Count коллекций объектов для определения количества записей в журнале событий.
Третья команда отображает количество экземпляров каждого события в журнале, при этом сначала выводятся самые часто возникающие события. В данном примере чаще всего возникает событие с идентификатором 600.
Четвертая команда группирует элементы по значению свойства LevelDisplayName для отображения количества сообщений типа Error, Warning и Information в журнале.
Пример 10
C:\PS>get-winevent -logname *disk*, Microsoft-Windows-Kernel-WHEA
Описание
-----------
Эта команда извлекает события типа "Ошибка", имена которых содержат слово "disk", из всех журналов событий на компьютере, а также из журнала событий Microsoft-Windows-Kernel-WHEA.
Пример 11
C:\PS>get-winevent -path 'c:\ps-test\Windows PowerShell.evtx'
Описание
-----------
Эта команда получает события из копии файла журнала событий Windows PowerShell, находящейся в тестовом каталоге. Путь заключен в кавычки, поскольку имя журнала содержит пробел.
Пример 12
C:\PS>get-winevent -path 'c:\tracing\tracelog.etl' -maxevents 100 -oldest
C:\PS> get-winevent -path 'c:\tracing\tracelog.etl' -oldest | sort-object -property timecreated -desc | select-object -first 100
Описание
-----------
Эти команды извлекают первые 100 событий из файла журнала средства отслеживания событий для Windows (ETW).
Первая команда извлекает из журнала 100 самых ранних событий. С помощью командлета Get-WinEvent она получает события из файла Tracelog.etl. Параметр MaxEvents ограничивает количество извлекаемых событий до 100. События перечисляются в порядке их записи в журнал (от старых к новым), поэтому необходимо использовать параметр Oldest.
Вторая команда извлекает из журнала 100 последних событий. С помощью командлета Get-WinEvent она получает все события из файла Tracing.etl. Она передает
события командлету Sort-Object, который сортирует их в порядке убывания значений свойства TimeCreated. Затем упорядоченные события передаются командлету Select-Object для выбора 100 последних событий.
Пример 13
C:\PS>get-winevent -path "c:\tracing\tracelog.etl", "c:\Logs\Windows PowerShell.evtx" -oldest | where {$_.id -eq "103"}
Описание
-----------
В этом примере показано, как извлечь события из файла журнала отслеживания событий (ETL) и из копии файла журнала Windows PowerShell (EVTX), сохраненной в тестовом каталоге.
В одной команде можно использовать различные типы файлов. Поскольку файлы содержат объект .NET Framework одного типа (объект EventLogRecord), для их фильтрации можно использовать одни и те же свойства.
Обратите внимание, что в команде необходимо использовать свойство Oldest, потому что выполняется чтение из файла ETL, однако параметр Oldest применяется в отношении обоих файлов.
Пример 14
C:\PS># Use the Where-Object cmdlet
C:\PS> $yesterday = (get-date) - (new-timespan -day 1)
C:\PS> get-winevent -logname "Windows PowerShell" | where {$_.timecreated -ge $yesterday}
# Uses FilterHashTable
C:\PS> $yesterday = (get-date) - (new-timespan -day 1)
C:\PS> get-winevent -FilterHashTable @{LogName='Windows PowerShell'; Level=3; StartTime=$yesterday}
# Use FilterXML
C:\PS> get-winevent -FilterXML "<QueryList><Query><Select Path='Windows PowerShell'>*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]</Select></Query></QueryList>"
# Use FilterXPath
C:\PS> get-winevent -LogName "Windows Powershell" -FilterXPath "*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]"
Описание
-----------
В этом примере продемонстрированы различные методы фильтрации для выбора событий из журнала событий. Все эти команды извлекают из журнала событий Windows PowerShell события, произошедшие в течение последних 24 часов.
Фильтрация эффективнее использования командлета Where-Object, поскольку фильтры применяются во время извлечения объектов (вместо того чтобы сначала извлечь все объекты, а затем фильтровать их).
Поскольку даты неудобно задавать в форматах XML и XPath, для создания XML-содержимого дат используется функция фильтрации текущего журнала средства просмотра событий. Дополнительные сведения об этой возможности см. в справке средства просмотра событий.
Пример 15
C:\PS>$date = (get-date).AddDays(-2)
C:\PS> $events = get-winevent -FilterHashTable @{ logname = "Microsoft-Windows-Diagnostics-Performance/Operational"; StartTime = $date; ID = 100 }
Описание
-----------
В этом примере для получения событий из журнала производительности используется хэш-таблица фильтра.
Первая команда с помощью командлета Get-Date и метода AddDays получает дату, на два дня предшествующую текущей дате. Дата сохраняется в переменной $date.
Вторая команда использует командлет Get-WinEvent с параметром FilterHashTable. Ключи хэш-таблицы определяют фильтр для выбора из журнала производительности событий с идентификатором события 100, которые произошли в течение последних двух дней.
Ключ LogName задает журнал событий, ключ StartTime — дату, а ключ ID — идентификатор события.
Пример 16
C:\PS>$starttime = (get-date).adddays(-7)
C:\PS> $ie-error = Get-WinEvent -FilterHashtable @{logname="application"; providername="Application Error"; data="iexplore.exe"; starttime=$starttime}
Описание
-----------
В этом примере хэш-таблица фильтра используется для поиска ошибок приложения Internet Explorer, произошедших в течение последней недели.
Первая команда получает дату, на семь дней предшествующую текущей дате, и сохраняет ее в переменной $starttime.
Вторая команда использует командлет Get-WinEvent с параметром FilterHashTable. Ключи хэш-таблицы определяют фильтр для выбора из журнала приложений событий, записанных поставщиком ошибок приложений и содержащих фразу "iexplore.exe".
Ключ LogName задает журнал событий. Ключ ProviderName задает поставщик событий, ключ StartTime — начальную дату событий, а ключ Data — текст в сообщении события.