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>]
说明
此 cmdlet 仅在 Windows 平台上可用。
Get-WinEvent
cmdlet 从事件日志(包括经典日志)获取事件,例如系统和应用程序日志。 该 cmdlet 从 Windows Vista 中引入的 Windows 事件日志技术生成的事件日志中获取数据,以及由 windows 事件跟踪 (ETW) 生成的日志文件中的事件。 默认情况下,Get-WinEvent
按最新到最早的顺序返回事件信息。
Get-WinEvent
列出事件日志和事件日志提供程序。 若要中断命令,请按 CTRL+C。 可以从所选的日志或从所选的事件提供程序生成的日志中获取事件。 还可以将来自多个源的事件组合到单个命令中。
Get-WinEvent
允许使用 XPath 查询、结构化 XML 查询和哈希表查询筛选事件。
如果未以管理员身份运行 PowerShell,则可能会看到错误消息,无法检索有关日志的信息。
示例
示例 1:从本地计算机获取所有日志
此命令将获取本地计算机上的所有事件日志。 日志按 Get-WinEvent
获取日志的顺序列出。 首先检索经典日志,然后检索新的 Windows 事件日志。
日志的 RecordCount 可以为 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
cmdlet 从计算机获取日志信息。 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
cmdlet 使用 ListLog 参数来指定安装程序日志。 该对象将通过管道向下发送到 Format-List
cmdlet。 Format-List
使用带有星号(*
)通配符的属性参数来显示每个属性。
示例 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
cmdlet 使用 ListLog 参数来指定安全日志。 对象将保存到变量中。 MaximumSizeInBytes 属性在对象上设置为 1 GB。 调用 SaveChanges 方法,将更改推送到试用块内的系统以处理访问冲突。 Get-WinEvent
cmdlet 在安全日志上再次调用,并通过管道传递给 Format-List
cmdlet,以验证计算机上是否已保存 MaximumSizeInBytes 属性。
示例 4:从服务器获取事件日志
此命令仅获取包含事件的本地计算机上的事件日志。 日志的 RecordCount 可以为 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
cmdlet 从计算机获取日志信息。 ListLog 参数使用星号 (*
) 通配符来显示有关每个日志的信息。 ComputerName 参数指定从本地计算机获取日志,localhost。 对象沿管道向下发送到 Where-Object
cmdlet。 Where-Object
使用 $_.RecordCount
仅返回包含数据的日志。 $_
是一个代表管道中当前对象的变量。 RecordCount 是具有非 null 值的对象的属性。
示例 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
cmdlet。 Select-Object
获取 LogMode 、MaximumSizeInBytes、RecordCount、LogName 属性,并使用计算表达式通过 $Server
变量显示 ComputerName 。 将对象沿管道向下发送到 Format-Table
cmdlet,以显示 PowerShell 控制台中的输出。 自动调整大小参数设置输出格式以适应屏幕。
示例 6:获取事件日志提供程序和日志名称
此命令获取事件日志提供程序及其写入的日志。
Get-WinEvent -ListProvider *
Name : .NET Runtime
LogLinks : {Application}
Opcodes : {}
Tasks : {}
Name : .NET Runtime Optimization Service
LogLinks : {Application}
Opcodes : {}
Tasks : {}
Get-WinEvent
cmdlet 从计算机获取日志信息。 ListProvider 参数使用星号(*
)通配符来显示有关每个提供程序的信息。 在输出中,Name 是提供程序,LogLinks 是提供程序写入的日志。
示例 7:获取写入到特定日志的所有事件日志提供程序
此命令获取写入应用程序日志的所有提供程序。
(Get-WinEvent -ListLog Application).ProviderNames
.NET Runtime
.NET Runtime Optimization Service
Application
Application Error
Application Hang
Application Management
Get-WinEvent
cmdlet 从计算机获取日志信息。 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
cmdlet 从计算机获取日志信息。 ListProvider 参数使用星号(*
)通配符查找提供程序名称中的任何位置的策略。
示例 9:获取事件提供程序生成的事件 ID
此命令列出了 Microsoft-Windows-GroupPolicy 事件提供程序生成的事件 ID 以及事件说明。
(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
cmdlet 从计算机获取日志信息。 ListProvider 参数指定提供程序,Microsoft-Windows-GroupPolicy。 表达式包装在括号中,并使用事件属性获取对象。 对象沿管道向下发送到 Format-Table
cmdlet。 Format-Table
显示事件对象的 ID 和说明。
示例 10:从事件对象属性获取日志信息
此示例演示如何使用事件对象属性获取有关日志内容的信息。 事件对象存储在变量中,然后按事件 ID 和级别进行分组和计数。
$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
Get-WinEvent
cmdlet 使用 LogName 参数来指定 Windows PowerShell 事件日志。 事件对象存储在 $Event
变量中。 $Event
的 Count 属性显示记录的事件总数。
$Event
变量将管道向下发送到 Group-Object
cmdlet。 Group-Object
使用 Property 参数指定 ID 属性,并按事件 ID 值对对象进行计数。 NoElement 参数从对象输出中删除其他属性。 分组对象沿管道向下发送到 Sort-Object
cmdlet。 Sort-Object
使用 Property 参数按计数对对象进行排序。 Descending 参数按计数显示输出,从高到低。 在输出中,计数列包含每个事件的总数。 名称列包含分组的事件 ID 编号。
$Event
变量将管道向下发送到 Group-Object
cmdlet。 Group-Object
使用 Property 参数指定 LevelDisplayName 属性,并通过 LevelDisplayName 对对象进行计数。 对象按警告和信息等级别分组。
NoElement 参数从输出中删除其他属性。 在输出中,计数列包含每个事件的总数。 名称列包含分组 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
cmdlet 从计算机获取日志信息。 LogName 参数使用带星号(*
)通配符的逗号分隔字符串来指定日志名称。 对象沿管道向下发送到 Group-Object
cmdlet。 Group-Object
使用 Property 参数按 LevelDisplayName 和 logName 对对象进行分组。 NoElement 参数从输出中删除其他属性。 分组对象沿管道向下发送到 Format-Table
cmdlet。 Format-Table
使用 AutoSize 参数设置列的格式。 计数列包含每个事件的总数。 名称列包含分组 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
cmdlet 从计算机获取日志信息。 Path 参数指定目录和文件名。
示例 13:从存档事件日志获取特定数量的事件
这些命令从存档事件日志中获取特定数量的事件。 Get-WinEvent
具有可获取最大事件数或最早事件的参数。 此示例使用存储在 C:\Test\PowerShellCore Operational.evtx 中的存档 PowerShell 日志。
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
cmdlet 从计算机获取日志信息。 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
cmdlet 从存档文件获取日志信息。 Path 参数指定目录和文件名。 Oldest 参数用于按事件写入的顺序输出事件,从最早到最新。 将对象沿管道向下发送到 Sort-Object
cmdlet,Sort-Object
按 TimeCreated 属性的值按降序对对象进行排序。 对象沿管道向下发送到显示 100 个最新事件的 Select-Object
cmdlet。
示例 15:从事件跟踪日志获取事件
此示例演示如何从事件跟踪日志文件 (.etl
) 和存档的 Windows PowerShell 日志文件 (.evtx
) 获取事件。 可以将多个文件类型组合到单个命令中。
由于文件包含相同类型的 .NET Framework 对象,EventLogRecord,因此可以使用相同的属性对其进行筛选。 该命令需要 Oldest 参数,因为它从 .etl
文件中读取,但最早的参数适用于每个文件。
Get-WinEvent -Path 'C:\Tracing\TraceLog.etl', 'C:\Test\Windows PowerShell.evtx' -Oldest |
Where-Object { $_.Id -eq '403' }
Get-WinEvent
cmdlet 从存档文件获取日志信息。 Path 参数使用逗号分隔的列表来指定每个文件目录和文件名。 Oldest 参数用于按事件写入的顺序输出事件,从最早到最新。 对象沿管道向下发送到 Where-Object
cmdlet。 Where-Object
使用脚本块查找 ID 为 403 的事件。 $_
变量表示管道中的当前对象,ID 是事件 ID 属性。
示例 16:筛选事件日志结果
此示例演示了从事件日志中筛选和选择事件的各种方法。 所有这些命令从 Windows PowerShell 事件日志获取过去 24 小时内发生的事件。
筛选器方法比使用 Where-Object
cmdlet 更高效。 在检索对象时应用筛选器。 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) <= 86400000]]]</Select>
</Query>
</QueryList>
'@
Get-WinEvent -FilterXML $xmlQuery
# Using the FilterXPath parameter:
$XPath = '*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]'
Get-WinEvent -LogName 'Windows PowerShell' -FilterXPath $XPath
示例 17:使用 FilterHashtable 从应用程序日志获取事件
此示例使用 FilterHashtable 参数从应用程序日志中获取事件。 哈希表将使用键/值对。 有关 FilterHashtable 参数的详细信息,请参阅 使用 FilterHashtable 创建 Get-WinEvent 查询。 有关哈希表的详细信息,请参阅 about_Hash_Tables。
$Date = (Get-Date).AddDays(-2)
Get-WinEvent -FilterHashtable @{ LogName='Application'; StartTime=$Date; Id='1003' }
Get-Date
cmdlet 使用 AddDays 方法获取当前日期前两天的日期。 日期对象存储在 $Date
变量中。
Get-WinEvent
cmdlet 获取日志信息。 FilterHashtable 参数用于筛选输出。 LogName 键将值指定为应用程序日志。 StartTime 键使用存储在 $Date
变量中的值。 ID 键使用事件 ID 值,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
cmdlet 使用 AddDays 方法获取当前日期之前的七天的日期。 日期对象存储在 $StartTime
变量中。
Get-WinEvent
cmdlet 获取日志信息。 FilterHashtable 参数用于筛选输出。 LogName 键将值指定为应用程序日志。 ProviderName 键使用值,应用程序错误,这是事件的源。 数据键使用 iexplore.exe。StartTime 键使用存储在 $StartTime
变量中的值。
示例 19:使用 SuppressHashFilter 筛选应用程序错误
与上面的示例 16 类似,此示例使用 FilterHashtable 参数从应用程序日志中获取事件。 不过,我们添加了 SuppressHashFilter 键来筛选掉信息级别的事件。
$Date = (Get-Date).AddDays(-2)
$filter = @{
LogName='Application'
StartTime=$Date
SuppressHashFilter=@{Level=4}
}
Get-WinEvent -FilterHashtable $filter
在此示例中,Get-WinEvent
获取过去两天内应用程序日志中的所有事件,但具有 4(信息)级别的事件除外。
参数
-ComputerName
指定此 cmdlet 从事件日志中获取事件的计算机的名称。 键入计算机的 NetBIOS 名称、IP 地址或完全限定的域名 (FQDN)。 默认值为本地计算机,localhost。 此参数一次只能接受一个计算机名称。
若要从远程计算机获取事件日志,请将事件日志服务的防火墙端口配置为允许远程访问。
此 cmdlet 不依赖于 PowerShell 远程处理。 即使计算机未配置为运行远程命令,也可以使用 ComputerName 参数。
类型: | String |
别名: | Cn |
Position: | Named |
默认值: | Local computer |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Credential
指定有权执行此操作的用户帐户。 默认值为当前用户。
键入用户名,如 User01 或 Domain01\User01。 或者,输入 PSCredential 对象,例如由 Get-Credential
cmdlet 生成的对象。 如果键入用户名,则将提示你输入密码。 如果仅键入参数名称,系统会提示输入用户名和密码。
类型: | PSCredential |
Position: | Named |
默认值: | Current user |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-FilterHashtable
指定哈希表格式的查询,以从一个或多个事件日志中选择事件。 查询包含一个或多个键/值对的哈希表。
哈希表查询具有以下规则:
- 键和值不区分大小写。
- 通配符仅在与 LogName 键和 ProviderName 键关联的值中有效。
- 每个键仅可以在每个哈希表中列出一次。
- 路径值采用
.etl
、.evt
和.evtx
日志文件的路径。 - 可以在同一查询中使用 LogName、路径和 ProviderName 键。
- UserID 密钥可以采用有效的安全标识符 (SID) 或域名,该名称可用于构造有效的 System.Security.Principal.NTAccount 对象。
- 数据值采用未命名字段中的事件数据。 例如,经典事件日志中的事件。
<named-data>
键表示命名事件数据字段。
当 Get-WinEvent
无法解释键/值对时,它将键解释为事件中事件数据区分大小写的名称。
有效的Get-WinEvent
键/值对如下所示:
- LogName=
<String[]>
- ProviderName=
<String[]>
- Path=
<String[]>
- 关键字=
<Long[]>
- ID=
<Int32[]>
- Level=
<Int32[]>
- StartTime=
<DateTime>
- EndTime=
<DateTime>
- UserID=
<SID>
- 数据=
<String[]>
<named-data>
=<String[]>
- SuppressHashFilter=
<Hashtable>
类型: | Hashtable[] |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-FilterXml
指定此 cmdlet 从一个或多个事件日志中选择事件的结构化 XML 查询。
若要生成有效的 XML 查询,请在 Windows 事件查看器中使用创建自定义视图和筛选当前日志功能。 使用对话框中的项创建查询,然后单击 XML 选项卡以查看 XML 格式的查询。 可以将该 XML 从 XML 选项卡复制到 FilterXml 参数的值中。 有关事件查看器功能的详细信息,请参阅“事件查看器帮助”。
使用 XML 查询创建包含多个 XPath 语句的复杂查询。 XML 格式还允许使用禁止 XML 元素,该元素从查询中排除事件。 有关事件日志查询的 XML 架构的详细信息,请参阅查询架构和事件选择的 XML 事件查询部分。
还可以使用 FilterHashtable 参数创建 Suppress 元素。
类型: | XmlDocument |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-FilterXPath
指定此 cmdlet 从一个或多个日志中选择事件的 XPath 查询。
有关 XPath 语言的详细信息,请参阅 XPath 参考和事件选择的“选择筛选器”部分。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Force
获取调试和分析日志以及其他事件日志。 当名称参数的值包含通配符时,需要使用 Force 参数才能获取调试或分析日志。
默认情况下,除非指定调试或分析日志的全名,否则 Get-WinEvent
cmdlet 将排除这些日志。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-ListLog
指定事件日志。 在以逗号分隔的列表中输入事件日志名称。 允许使用通配符。 若要获取所有日志,请使用星号 (*
) 通配符。
类型: | String[] |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | True |
-ListProvider
指定此 cmdlet 获取的事件日志提供程序。 事件日志提供程序是可将事件写入事件日志的一种程序或服务。
在以逗号分隔的列表中输入提供程序名称。 允许使用通配符。 若要获取计算机上的所有事件日志的提供程序,请使用星号 (*
) 通配符。
类型: | String[] |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | True |
-LogName
指定此 cmdlet 从中获取事件的事件日志。 在以逗号分隔的列表中输入事件日志名称。 允许使用通配符。 还可以通过管道将日志名称传递给 Get-WinEvent
cmdlet。
注意
PowerShell 不会限制可以请求的日志量。 但是,Get-WinEvent
cmdlet 查询限制为 256 的 Windows API。 这会造成一次难以筛选所有日志。 可以使用 foreach
循环循环遍历每个日志,如下所示:Get-WinEvent -ListLog * | ForEach-Object{ Get-WinEvent -LogName $_.Logname }
类型: | String[] |
Position: | 0 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | True |
-MaxEvents
指定返回的最大事件数。 输入一个整数,例如 100。 默认设置为返回日志或文件中的所有事件。
类型: | Int64 |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Oldest
指示此 cmdlet 按最早优先顺序获取事件。 默认情况下,事件按从新到旧的顺序返回。
此参数需要从 .etl
和 .evt
文件和调试和分析日志中获取事件。 在这些文件中,事件按从旧到新的顺序记录,并且只能按从旧到新的顺序返回。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Path
指定此 cmdlet 从中获取事件的事件日志文件的路径。 在以逗号分隔的列表中输入日志文件的路径,或使用通配符来创建文件路径模式。
Get-WinEvent
支持具有 .evt
、.evtx
和 .etl
文件扩展名的文件。 可以在同一命令中包括来自不同文件和文件类型的事件。
类型: | String[] |
别名: | PSPath |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | True |
-ProviderName
指定此 cmdlet 从中获取事件的事件日志提供程序作为字符串数组。 在以逗号分隔的列表中输入提供程序名称,或使用通配符来创建提供程序名称模式。
事件日志提供程序是可将事件写入事件日志的一种程序或服务。 它不是 PowerShell 提供程序。
类型: | String[] |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | True |
输入
可以通过管道将 LogName(字符串)传递给此 cmdlet。
可以通过管道将 FilterXML 查询传递给此 cmdlet。
可以通过管道将 FilterHashtable 查询传递给此 cmdlet。
输出
使用 ListLog 参数,此 cmdlet 返回 EventLogConfiguration 对象。
默认情况下,此 cmdlet 返回 EventLogRecord 对象。
使用 ListProvider 参数时,此 cmdlet 返回 ProviderMetadata 对象。
备注
Get-WinEvent
旨在替换运行 Windows Vista 和更高版本的 Windows 的计算机上的 Get-EventLog
cmdlet。 Get-EventLog
仅在经典事件日志中获取事件。 为实现后向兼容性保留了 Get-EventLog
。
Get-WinEvent
和 Get-EventLog
cmdlet 在 Windows 预安装环境 (Windows PE) 中不受支持。