Поделиться через


Get-WinEvent

Получает события из журналов событий и файлов журналов трассировки событий на локальных и удаленных компьютерах.

Синтаксис

Get-WinEvent
   [[-LogName] <String[]>]
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterXPath <String>]
   [-Force]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-ListLog] <String[]>
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-Force]
   [<CommonParameters>]
Get-WinEvent
   [-ListProvider] <String[]>
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [<CommonParameters>]
Get-WinEvent
   [-ProviderName] <String[]>
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterXPath <String>]
   [-Force]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-Path] <String[]>
   [-MaxEvents <Int64>]
   [-Credential <PSCredential>]
   [-FilterXPath <String>]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterHashtable] <Hashtable[]>
   [-Force]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterXml] <XmlDocument>
   [-Oldest]
   [<CommonParameters>]

Описание

Командлет Get-WinEvent получает события из журналов событий, включая классические журналы, такие как журналы системы и приложений . Командлет получает данные из журналов событий, созданных технологией журнала событий Windows, представленной в Windows Vista и событиях в файлах журналов, созданных трассировкой событий для Windows (ETW). По умолчанию Get-WinEvent возвращает сведения о событии в порядке новейших до старых.

Get-WinEvent выводит список журналов событий и поставщиков журналов событий. Чтобы прервать команду, нажмите клавиши CTRL+C. События можно получить из выбранных журналов или из журналов, созданных выбранными поставщиками событий. Кроме того, можно объединять события из нескольких источников в одну команду. Get-WinEvent позволяет фильтровать события с помощью запросов XPath, структурированных XML-запросов и хэш-таблиц.

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

Примеры

Пример 1. Получение всех журналов с локального компьютера

Эта команда получает все журналы событий на локальном компьютере. Журналы перечислены в порядке их Get-WinEvent получения. Классические журналы сначала извлекаются, а затем новые журналы событий Windows. Запись журнала может иметь значение NULL, что является пустым или нулевым.

Get-WinEvent -ListLog *

LogMode   MaximumSizeInBytes RecordCount LogName
-------   ------------------ ----------- -------
Circular            15532032       14500 Application
Circular             1052672         117 Azure Information Protection
Circular             1052672        3015 CxAudioSvcLog
Circular            20971520             ForwardedEvents
Circular            20971520           0 HardwareEvents

Командлет Get-WinEvent получает данные журнала с компьютера. Параметр ListLog использует подстановочный знак звездочки (*) для отображения сведений о каждом журнале.

Пример 2. Получение классического журнала установки

Эта команда получает объект EventLogConfiguration, представляющий классический журнал установки. Объект содержит сведения о журнале, таких как размер файла, поставщик, путь к файлу и включение журнала.

Get-WinEvent -ListLog Setup | Format-List -Property *

FileSize                       : 69632
IsLogFull                      : False
LastAccessTime                 : 3/13/2019 09:41:46
LastWriteTime                  : 3/13/2019 09:41:46
OldestRecordNumber             : 1
RecordCount                    : 23
LogName                        : Setup
LogType                        : Operational
LogIsolation                   : Application
IsEnabled                      : True
IsClassicLog                   : False
SecurityDescriptor             : O:BAG:SYD: ...
LogFilePath                    : %SystemRoot%\System32\Winevt\Logs\Setup.evtx
MaximumSizeInBytes             : 1052672
LogMode                        : Circular
OwningProviderName             : Microsoft-Windows-Eventlog
ProviderNames                  : {Microsoft-Windows-WUSA, Microsoft-Windows-ActionQueue...
ProviderLevel                  :
ProviderKeywords               :
ProviderBufferSize             : 64
ProviderMinimumNumberOfBuffers : 0
ProviderMaximumNumberOfBuffers : 64
ProviderLatency                : 1000
ProviderControlGuid            :

Командлет Get-WinEvent использует параметр ListLog для указания журнала установки . Объект отправляется по конвейеру командлету Format-List . Format-Listиспользует параметр Property с подстановочным знаком звездочки (*) для отображения каждого свойства.

Пример 3. Настройка классического журнала безопасности

Эта команда получает объект EventLogConfiguration, представляющий классический журнал безопасности. Затем объект используется для настройки параметров журнала, таких как максимальный размер файла, путь к файлу и включение журнала.

$log = Get-WinEvent -ListLog Security
$log.MaximumSizeInBytes = 1gb
try{
   $log.SaveChanges()
   Get-WinEvent -ListLog Security | Format-List -Property *
}catch [System.UnauthorizedAccessException]{
   $ErrMsg  = 'You do not have permission to configure this log!'
   $ErrMsg += ' Try running this script with administrator privileges. '
   $ErrMsg += $_.Exception.Message
   Write-Error $ErrMsg
}

FileSize                       : 69632
IsLogFull                      : False
LastAccessTime                 : 3/13/2019 09:41:46
LastWriteTime                  : 3/13/2019 09:41:46
OldestRecordNumber             : 1
RecordCount                    : 23
LogName                        : Security
LogType                        : Administrative
LogIsolation                   : Custom
IsEnabled                      : True
IsClassicLog                   : True
SecurityDescriptor             : O:BAG:SYD: ...
LogFilePath                    : %SystemRoot%\System32\Winevt\Logs\Security.evtx
MaximumSizeInBytes             : 1073741824
LogMode                        : Circular
OwningProviderName             :
ProviderNames                  : {Microsoft-Windows-WUSA, Microsoft-Windows-ActionQueue...
ProviderLevel                  :
ProviderKeywords               :
ProviderBufferSize             : 64
ProviderMinimumNumberOfBuffers : 0
ProviderMaximumNumberOfBuffers : 64
ProviderLatency                : 1000
ProviderControlGuid            :

Командлет Get-WinEvent использует параметр ListLog для указания журнала безопасности . Объект сохраняется в переменной. Свойство MaximumSizeInBytes имеет значение 1 гигабайт в объекте. Метод SaveChanges вызывается для отправки изменений в систему внутри блока try для обработки нарушений доступа. Командлет Get-WinEvent вызывается снова в журнале безопасности и отправляется Format-List командлету, чтобы убедиться, что свойство MaximumSizeInBytes сохранено на компьютере.

Пример 4. Получение журналов событий с сервера

Эта команда получает только журналы событий на локальном компьютере с событиями. Запись журнала может иметь значение NULL или ноль. В примере используется $_ переменная. Дополнительные сведения см. в статье about_Automatic_Variables.

Get-WinEvent -ListLog * -ComputerName localhost | Where-Object { $_.RecordCount }

LogMode   MaximumSizeInBytes RecordCount LogName
-------   ------------------ ----------- -------
Circular            15532032       14546 Application
Circular             1052672         117 Azure Information Protection
Circular             1052672        2990 CxAudioSvcLog
Circular             1052672           9 MSFTVPN Setup
Circular             1052672         282 OAlerts

Командлет Get-WinEvent получает данные журнала с компьютера. Параметр ListLog использует подстановочный знак звездочки (*) для отображения сведений о каждом журнале. Параметр ComputerName указывает, чтобы получить журналы с локального компьютера, localhost. Объекты отправляются по конвейеру командлету Where-Object . Where-Object используется $_.RecordCount для возврата только журналов, содержащих данные. $_ — это переменная, представляющая текущий объект в конвейере. RecordCount — это свойство объекта с ненулевым значением.

Пример 5. Получение журналов событий с нескольких серверов

В этом примере получаются объекты, представляющие журналы событий приложения на трех компьютерах: Server01, Server02 и Server03. Ключевое слово ForEach используется, так как параметр ComputerName принимает только одно значение. Дополнительные сведения см. в about_Foreach.

$S = 'Server01', 'Server02', 'Server03'
ForEach ($Server in $S) {
  Get-WinEvent -ListLog Application -ComputerName $Server |
    Select-Object LogMode, MaximumSizeInBytes, RecordCount, LogName,
      @{name='ComputerName'; expression={$Server}} |
    Format-Table -AutoSize
}

LogMode MaximumSizeInBytes RecordCount LogName     ComputerName
 ------- ------------------ ----------- -------     ------------
Circular           15532032       14577 Application Server01
Circular           15532032        9689 Application Server02
Circular           15532032        5309 Application Server03

Переменная $S хранит имена трех серверов: Server01, Server02 и Server03. Оператор ForEach использует цикл для обработки каждого сервера ($Server in $S). Блок скрипта в фигурных скобках ({ }) выполняет Get-WinEvent команду. Параметр ListLog указывает журнал приложений. Параметр ComputerName использует переменную $Server для получения сведений журнала с каждого сервера.

Объекты отправляются по конвейеру командлету Select-Object . Select-Objectвозвращает свойства LogMode, MaximumSizeInBytes, RecordCount, LogName и использует вычисляемое выражение для отображения имени компьютера с помощью переменной$Server. Объекты отправляются по конвейеру Format-Table командлету, чтобы отобразить выходные данные в консоли PowerShell. Параметр AutoSize форматирует выходные данные для соответствия экрану.

Пример 6. Получение поставщиков журналов событий и имен журналов

Эта команда получает поставщиков журналов событий и журналы, в которые они записывают.

Get-WinEvent -ListProvider *

Name     : .NET Runtime
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Name     : .NET Runtime Optimization Service
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Командлет Get-WinEvent получает данные журнала с компьютера. Параметр ListProvider использует подстановочный знак звездочки (*) для отображения сведений о каждом поставщике. В выходных данных имя — это поставщик и LogLinks — это журнал, в который записывается поставщик.

Пример 7. Получение всех поставщиков журналов событий, записываемых в определенный журнал.

Эта команда получает всех поставщиков, записываемых в журнал приложений.

(Get-WinEvent -ListLog Application).ProviderNames

.NET Runtime
.NET Runtime Optimization Service
Application
Application Error
Application Hang
Application Management

Командлет Get-WinEvent получает данные журнала с компьютера. Параметр ListLog использует приложение для получения объектов для этого журнала. ProviderNames — это свойство объекта и отображает поставщиков, записываемых в журнал приложений.

Пример 8. Получение имен поставщиков журналов событий, содержащих определенную строку

Эта команда получает поставщиков журналов событий с именами, включающими определенную строку в имя поставщика.

Get-WinEvent -ListProvider *Policy*

Name     : Group Policy Applications
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Name     : Group Policy Client
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Name     : Group Policy Data Sources
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Командлет Get-WinEvent получает данные журнала с компьютера. Параметр ListProvider использует подстановочный знак звездочки (*) для поиска политики в любом месте имени поставщика.

Пример 9. Получение идентификаторов событий, создаваемых поставщиком событий

Эта команда содержит идентификаторы событий, создаваемые поставщиком событий Microsoft-Windows-GroupPolicy , а также описание события.

(Get-WinEvent -ListProvider Microsoft-Windows-GroupPolicy).Events | Format-Table Id, Description

Id  Description
  --  -----------
1500  The Group Policy settings for the computer were processed successfully...
1501  The Group Policy settings for the user were processed successfully...
4115  Group Policy Service started.
4116  Started the Group Policy service initialization phase.
4117  Group Policy Session started.

Командлет Get-WinEvent получает данные журнала с компьютера. Параметр ListProvider указывает поставщика Microsoft-Windows-GroupPolicy. Выражение упаковывается в скобки и использует свойство Events для получения объектов. Объекты отправляются по конвейеру командлету Format-Table . Format-Tableотображает идентификатор и описание объектов событий.

Пример 10. Получение сведений журнала из свойств объекта события

В этом примере показано, как получить сведения о содержимом журнала с помощью свойств объекта события. Объекты событий хранятся в переменной, а затем группируются и подсчитываются по идентификатору события и уровню.

$Event = Get-WinEvent -LogName 'Windows PowerShell'
$Event.Count
$Event | Group-Object -Property Id -NoElement | Sort-Object -Property Count -Descending
$Event | Group-Object -Property LevelDisplayName -NoElement

195

Count  Name
-----  ----
  147  600
   22  400
   21  601
    3  403
    2  103

Count  Name
-----  ----
    2  Warning
  193  Information

Командлет использует параметр LogName для указания журнала событий Windows PowerShell.Get-WinEvent Объекты событий хранятся в переменной $Event . Свойство Count $Eventпоказывает общее количество зарегистрированных событий.

Переменная $Event отправляется по конвейеру командлету Group-Object . Group-Objectиспользует параметр Property, чтобы указать свойство Id и подсчитывает объекты по значению идентификатора события. Параметр NoElement удаляет другие свойства из выходных данных объектов. Сгруппированные объекты отправляются по конвейеру командлету Sort-Object . Sort-Objectиспользует параметр Property для сортировки объектов по счетчику. Параметр "Убывание " отображает выходные данные по количеству, от максимального до самого низкого. В выходных данных столбец Count содержит общее число каждого события. Столбец "Имя" содержит номера идентификаторов сгруппированных событий.

Переменная $Event отправляется по конвейеру командлету Group-Object . Group-Objectиспользует параметр Property для указания свойства LevelDisplayName и подсчета объектов по LevelDisplayName. Объекты группируются по уровням, таким как предупреждение и информация. Параметр NoElement удаляет другие свойства из выходных данных. В выходных данных столбец Count содержит общее число каждого события. Столбец Name содержит группованный levelDisplayName.

Пример 11. Получение событий ошибок с указанной строкой в имени

В этом примере используется строка имен журналов, разделенная запятыми. Выходные данные группируются по уровню, такому как ошибка или предупреждение, и имя журнала.

Get-WinEvent -LogName *PowerShell*, Microsoft-Windows-Kernel-WHEA* |
  Group-Object -Property LevelDisplayName, LogName -NoElement |
    Format-Table -AutoSize

Count  Name
-----  ----
    1  Error, PowerShellCore/Operational
   26  Information, Microsoft-Windows-Kernel-WHEA/Operational
  488  Information, Microsoft-Windows-PowerShell/Operational
   77  Information, PowerShellCore/Operational
 9835  Information, Windows PowerShell
   19  Verbose, PowerShellCore/Operational
  444  Warning, Microsoft-Windows-PowerShell/Operational
  512  Warning, PowerShellCore/Operational

Командлет Get-WinEvent получает данные журнала с компьютера. Параметр LogName использует строку, разделенную запятыми, со звездочкой (*) для указания имен журналов. Объекты отправляются по конвейеру командлету Group-Object . Group-Objectиспользует параметр Property для группировки объектов по LevelDisplayName и LogName. Параметр NoElement удаляет другие свойства из выходных данных. Сгруппированные объекты отправляются по конвейеру командлету Format-Table . Format-Tableиспользует параметр AutoSize для форматирования столбцов. Столбец Count содержит общее число каждого события. Столбец Name содержит группируемый levelDisplayName и LogName.

Пример 12. Получение событий из архивного журнала событий

Get-WinEvent может получить сведения о событии из сохраненных файлов журнала. В этом примере используется архивный журнал PowerShell, хранящийся на локальном компьютере.

Get-WinEvent -Path 'C:\Test\Windows PowerShell.evtx'

ProviderName: PowerShell

TimeCreated              Id LevelDisplayName  Message
-----------              -- ----------------  -------
3/15/2019 13:54:13      403 Information       Engine state is changed from Available to Stopped...
3/15/2019 13:54:13      400 Information       Engine state is changed from None to Available...
3/15/2019 13:54:13      600 Information       Provider "Variable" is Started...
3/15/2019 13:54:13      600 Information       Provider "Function" is Started...
3/15/2019 13:54:13      600 Information       Provider "FileSystem" is Started...

Командлет Get-WinEvent получает данные журнала с компьютера. Параметр Path задает имя каталога и файла.

Пример 13. Получение определенного количества событий из архивного журнала событий

Эти команды получают определенное количество событий из архивного журнала событий. Get-WinEvent имеет параметры, которые могут получить максимальное количество событий или старейших событий. В этом примере используется архивный журнал PowerShell, хранящийся в C:\Test\PowerShellCore Operational.evtx.

Get-WinEvent -Path 'C:\Test\PowerShellCore Operational.evtx' -MaxEvents 100

ProviderName: PowerShellCore

TimeCreated                 Id   LevelDisplayName  Message
-----------                 --   ----------------  -------
3/15/2019 09:54:54        4104   Warning           Creating Scriptblock text (1 of 1):...
3/15/2019 09:37:13       40962   Information       PowerShell console is ready for user input
3/15/2019 07:56:24        4104   Warning           Creating Scriptblock text (1 of 1):...
...
3/7/2019 10:53:22        40961   Information       PowerShell console is starting up
3/7/2019 10:53:22         8197   Verbose           Runspace state changed to Opening
3/7/2019 10:53:22         8195   Verbose           Opening RunspacePool

Командлет Get-WinEvent получает данные журнала с компьютера. Параметр Path указывает каталог и имя файла. Параметр MaxEvents указывает, что отображаются 100 записей от самых новых до старых.

Пример 14. Трассировка событий для Windows

Трассировка событий для Windows (ETW) записывает события в журнал по мере возникновения событий. События хранятся в порядке старейших до новейших. Архивированный файл ETW сохраняется в виде .etl такого файла, как TraceLog.etl. События перечислены в том порядке, в котором они записываются в журнал, поэтому требуется самый старый параметр.

Get-WinEvent -Path 'C:\Tracing\TraceLog.etl' -Oldest |
  Sort-Object -Property TimeCreated -Descending |
    Select-Object -First 100

Командлет Get-WinEvent получает данные журнала из архивного файла. Параметр Path задает имя каталога и файла. Самый старый параметр используется для вывода событий в том порядке, в который они записываются, старее до новейших. Объекты отправляются по конвейеру командлетуSort-Object, сортируя объекты в порядке убывания по значению свойства TimeCreated.Sort-Object Объекты отправляются по конвейеру Select-Object командлету, который отображает 100 новейших событий.

Пример 15. Получение событий из журнала трассировки событий

В этом примере показано, как получить события из файла журнала трассировки событий (.etl) и архивированного файла журнала Windows PowerShell (.evtx). Можно объединить несколько типов файлов в одну команду. Так как файлы содержат один и тот же тип объекта платформа .NET Framework EventLogRecord, их можно фильтровать с теми же свойствами. Для команды требуется старый параметр, так как он считывается из .etl файла, но самый старый параметр применяется к каждому файлу.

Get-WinEvent -Path 'C:\Tracing\TraceLog.etl', 'C:\Test\Windows PowerShell.evtx' -Oldest |
  Where-Object { $_.Id -eq '403' }

Командлет Get-WinEvent получает данные журнала из архивных файлов. Параметр Path использует разделенный запятыми список для указания каждого каталога файлов и имени файла. Самый старый параметр используется для вывода событий в том порядке, в который они записываются, старее до новейших. Объекты отправляются по конвейеру командлету Where-Object . Where-Objectиспользует блок скрипта для поиска событий с идентификатором 403. Переменная $_ представляет текущий объект в конвейере и идентификатор является свойством Идентификатора события.

Пример 16. Фильтрация результатов журнала событий

В этом примере показаны различные методы для фильтрации и выбора событий из журнала событий. Все эти команды получают события, произошедшие за последние 24 часа из журнала событий Windows PowerShell . Методы фильтрации более эффективны, чем использование командлета Where-Object . Фильтры применяются при извлечении объектов. Where-Object извлекает все объекты, а затем применяет фильтры ко всем объектам.

# Using the Where-Object cmdlet:
$Yesterday = (Get-Date) - (New-TimeSpan -Day 1)
Get-WinEvent -LogName 'Windows PowerShell' | Where-Object { $_.TimeCreated -ge $Yesterday }

# Using the FilterHashtable parameter:
$Yesterday = (Get-Date) - (New-TimeSpan -Day 1)
Get-WinEvent -FilterHashtable @{ LogName='Windows PowerShell'; Level=3; StartTime=$Yesterday }

# Using the FilterXML parameter:
$xmlQuery = @'
<QueryList>
  <Query Id="0" Path="Windows PowerShell">
    <Select Path="System">*[System[(Level=3) and
        TimeCreated[timediff(@SystemTime) &lt;= 86400000]]]</Select>
  </Query>
</QueryList>
'@
Get-WinEvent -FilterXML $xmlQuery

# Using the FilterXPath parameter:
$XPath = '*[System[Level=3 and TimeCreated[timediff(@SystemTime) &lt;= 86400000]]]'
Get-WinEvent -LogName 'Windows PowerShell' -FilterXPath $XPath

Пример 17. Использование FilterHashtable для получения событий из журнала приложений

В этом примере используется параметр FilterHashtable для получения событий из журнала приложений. В хэш-таблице используются пары "ключ-значение ". Дополнительные сведения о параметре FilterHashtable см. в разделе "Создание запросов Get-WinEvent с помощью FilterHashtable". Дополнительные сведения о хэш-таблицах см. здесь.

$Date = (Get-Date).AddDays(-2)
Get-WinEvent -FilterHashtable @{ LogName='Application'; StartTime=$Date; Id='1003' }

Командлет Get-Date использует метод AddDays для получения даты, которая составляет два дня до текущей даты. Объект date хранится в переменной $Date .

Командлет получает сведения о журнале Get-WinEvent . Параметр FilterHashtable используется для фильтрации выходных данных. Ключ LogName указывает значение в качестве журнала приложения . Ключ StartTime использует значение, хранящееся в переменной $Date . Ключ идентификатора использует значение идентификатора события 1003.

Пример 18. Использование FilterHashtable для получения ошибок приложения

В этом примере используется параметр FilterHashtable для поиска ошибок приложения Internet Explorer, которые произошли за последнюю неделю.

$StartTime = (Get-Date).AddDays(-7)
Get-WinEvent -FilterHashtable @{
  Logname='Application'
  ProviderName='Application Error'
  Data='iexplore.exe'
  StartTime=$StartTime
}

Командлет Get-Date использует метод AddDays для получения даты, которая составляет семь дней до текущей даты. Объект date хранится в переменной $StartTime .

Командлет получает сведения о журнале Get-WinEvent . Параметр FilterHashtable используется для фильтрации выходных данных. Ключ LogName указывает значение в качестве журнала приложения . Ключ ProviderName использует значение, ошибка приложения, которая является источником события. Ключ данных использует значение iexplore.exe Ключ StartTime использует значение, хранящееся в $StartTime переменной.

Параметры

-ComputerName

Указывает имя компьютера, который этот командлет получает события из журналов событий. Введите имя NetBIOS, IP-адрес или полное доменное имя компьютера. Значением по умолчанию является локальный компьютер, localhost. Этот параметр принимает только одно имя компьютера за один раз.

Чтобы получить журналы событий с удаленных компьютеров, настройте порт брандмауэра для службы журналов событий, чтобы разрешить удаленный доступ.

Этот командлет не зависит от удаленного взаимодействия PowerShell. Параметр ComputerName можно использовать, даже если компьютер не настроен для выполнения удаленных команд.

Тип:String
Aliases:Cn
Position:Named
Default value:Local computer
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Credential

Указывает учетную запись пользователя с разрешением на выполнение этого действия. Значение по умолчанию: текущий пользователь.

Введите имя пользователя, например User01 или Domain01\User01. Или введите объект PSCredential , например один, созданный командлетом Get-Credential . Если ввести имя пользователя, вам будет предложено ввести пароль. Если ввести только имя параметра, вам будет предложено как имя пользователя, так и пароль.

Тип:PSCredential
Position:Named
Default value:Current user
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-FilterHashtable

Задает запрос в формате хэш-таблицы для выбора событий из одного или нескольких журналов событий. Запрос содержит хэш-таблицу с одной или несколькими парами "ключ-значение ".

К запросам хэш-таблиц применяются следующие правила.

  • Ключи и значения обрабатываются без учета регистра.
  • Подстановочные знаки допустимы только в значениях, связанных с ключами LogName и ProviderName .
  • Каждый ключ может быть указан только один раз в каждой хэш-таблице.
  • Значение пути принимает пути к .etlфайлам журнала и , .evtа также .evtx к файлам журнала.
  • Ключи LogName, Path и ProviderName можно использовать в одном запросе.
  • Ключ UserID может принимать допустимый идентификатор безопасности (SID) или имя учетной записи домена, которое можно использовать для создания допустимого объекта System.Security.Principal.NTAccount.
  • Значение "Данные" принимает данные события в неназванном поле. Например, события в классических журналах событий.

Если Get-WinEvent не удается интерпретировать пару "ключ-значение", он интерпретирует ключ как имя с учетом регистра для данных события в событии.

Допустимые Get-WinEvent пары "ключ-значение " приведены следующим образом:

  • Имя журнала=<String[]>
  • ProviderName=<String[]>
  • Путь=<String[]>
  • Ключевые слова=<Long[]>
  • ИД=<Int32[]>
  • Уровень=<Int32[]>
  • StartTime=<DateTime>
  • EndTime=<DateTime>
  • UserID=<SID>
  • Данные=<String[]>
Тип:Hashtable[]
Position:1
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-FilterXml

Указывает структурированный XML-запрос, который этот командлет выбирает события из одного или нескольких журналов событий.

Чтобы создать допустимый XML-запрос, используйте функции создания пользовательского представления и фильтрации текущего журнала в Windows Просмотр событий. Создайте запрос с помощью элементов в диалоговом окне, а затем перейдите на вкладку XML для просмотра запроса в формате XML. XML-файл можно скопировать с вкладки XML в значение параметра FilterXml. Дополнительные сведения о компонентах средства просмотра событий см. в справке средства.

Используйте XML-запрос для создания сложного запроса, содержащего несколько инструкций XPath. Формат XML также позволяет использовать элемент Suppress XML , который исключает события из запроса. Дополнительные сведения о схеме XML для запросов журнала событий см. в разделе "Схема запроса" и раздел "Запросы событий XML" выбора событий.

Тип:XmlDocument
Position:1
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-FilterXPath

Указывает запрос XPath, который этот командлет выбирает события из одного или нескольких журналов.

Дополнительные сведения о языке XPath см. в разделе "Справочник по XPath" и раздел "Фильтры выбора" в разделе "Выбор событий".

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Force

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

По умолчанию командлет исключает эти журналы, Get-WinEvent если вы не укажете полное имя отладочного или аналитического журнала.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ListLog

Определяет журналы событий. Введите имена журналов событий в список, разделяя их запятыми. Разрешено использовать подстановочные знаки. Чтобы получить все журналы, используйте подстановочный знак звездочки (*).

Тип:String[]
Position:1
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:True

-ListProvider

Указывает поставщики журналов событий, которые получает этот командлет. Поставщик журнала событий — это программа или служба, которая записывает события в журнал событий.

Введите имена поставщиков в список, разделяя их запятыми. Разрешено использовать подстановочные знаки. Чтобы получить поставщиков всех журналов событий на компьютере, используйте подстановочный знак звездочки (*).

Тип:String[]
Position:1
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:True

-LogName

Указывает журналы событий, из которым этот командлет получает события. Введите имена журналов событий в список, разделяя их запятыми. Разрешено использовать подстановочные знаки. Вы также можете передать имена журналов командлету Get-WinEvent .

Примечание.

PowerShell не ограничивает количество журналов, которые можно запросить. Get-WinEvent Однако командлет запрашивает API Windows, который имеет ограничение в 256. Это может затруднить фильтрацию по всем журналам одновременно. Это можно обойти с помощью цикла для итерации по каждому журналу foreach , как показано ниже: Get-WinEvent -ListLog * | ForEach-Object{ Get-WinEvent -LogName $_.Logname }

Тип:String[]
Position:1
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:True

-MaxEvents

Указывает максимальное количество возвращаемых событий. Введите целое число, например 100. Значение по умолчанию: возврат всех событий в журналах или файлах.

Тип:Int64
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Oldest

Укажите, что этот командлет получает события в старом порядке. По умолчанию события возвращаются в порядке "сначала новые".

Этот параметр необходим для получения событий из .etl и файлов, .evt а также от отладочных и аналитических журналов. В этих файлах события записываются в порядке "старые сначала", поэтому они могут быть возвращены только в том же порядке.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Path

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

Get-WinEventподдерживает файлы с .evt.evtxрасширениями имени файла и .etl файла. В одну команду можно включить события из разных файлов и типов файлов.

Тип:String[]
Aliases:PSPath
Position:1
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:True

-ProviderName

Указывает в виде строкового массива поставщики журналов событий, из которых этот командлет получает события. Введите разделенный запятыми список имен поставщиков или используйте подстановочные знаки для создания шаблонов имен поставщиков.

Поставщик журнала событий — это программа или служба, которая записывает события в журнал событий. Это не поставщик PowerShell.

Тип:String[]
Position:1
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:True

Входные данные

String

Вы можете передать имя журнала (строку) в этот командлет.

XmlDocument

Вы можете передать запрос FilterXML в этот командлет.

Hashtable

Вы можете передать запрос FilterHashtable в этот командлет.

Выходные данные

EventLogConfiguration

С параметром ListLog этот командлет возвращает объекты EventLogConfiguration.

EventLogRecord

По умолчанию этот командлет возвращает объекты EventLogRecord .

ProviderMetadata

С параметром ListProvider этот командлет возвращает объекты ProviderMetadata .

Примечания

Get-WinEvent предназначен для замены командлета Get-EventLog на компьютерах под управлением Windows Vista и более поздних версий Windows. Get-EventLog получает события только в классических журналах событий. Функция Get-EventLog поддерживается для совместимости с предыдущими версиями.

Get-EventLog Командлеты Get-WinEvent не поддерживаются в среде предварительной установки Windows (windows PE).