Get-EventLog
获取本地计算机或远程计算机上的事件日志或事件日志列表中的事件。
语法
Get-EventLog
[-LogName] <String>
[-ComputerName <String[]>]
[-Newest <Int32>]
[-After <DateTime>]
[-Before <DateTime>]
[-UserName <String[]>]
[[-InstanceId] <Int64[]>]
[-Index <Int32[]>]
[-EntryType <String[]>]
[-Source <String[]>]
[-Message <String>]
[-AsBaseObject]
[<CommonParameters>]
Get-EventLog
[-ComputerName <String[]>]
[-List]
[-AsString]
[<CommonParameters>]
说明
Get-EventLog
cmdlet 获取本地和远程计算机上的事件和事件日志。 默认情况下,Get-EventLog
从本地计算机获取日志。 若要从远程计算机获取日志,请使用 ComputerName 参数。
可以使用 Get-EventLog
参数和属性值搜索事件。 该 cmdlet 获取与指定属性值匹配的事件。
包含 EventLog
名词的 PowerShell cmdlet 仅适用于 Windows 经典事件日志,例如应用程序、系统或安全性。 若要获取在 Windows Vista 及更高版本中使用 Windows 事件日志技术的日志,请使用 Get-WinEvent
。
注意
Get-EventLog
使用已弃用的 Win32 API。 结果可能不准确。 请改用 Get-WinEvent
cmdlet。
示例
示例 1:获取本地计算机上的事件日志
此示例显示本地计算机上可用的事件日志列表。 Log 列中的名称与 LogName 参数一起使用,以指定搜索事件的日志。
Get-EventLog -List
Max(K) Retain OverflowAction Entries Log
------ ------ -------------- ------- ---
15,168 0 OverwriteAsNeeded 20,792 Application
15,168 0 OverwriteAsNeeded 12,559 System
15,360 0 OverwriteAsNeeded 11,173 Windows PowerShell
Get-EventLog
cmdlet 使用 List 参数显示可用的日志。
示例 2:从本地计算机上的事件日志获取最近的条目
此示例从系统事件日志中获取最近的条目。
Get-EventLog -LogName System -Newest 5
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
13820 Jan 17 19:16 Error DCOM 10016 The description for Event...
13819 Jan 17 19:08 Error DCOM 10016 The description for Event...
13818 Jan 17 19:06 Information Service Control... 1073748864 The start type of the Back...
13817 Jan 17 19:05 Error DCOM 10016 The description for Event...
13815 Jan 17 19:03 Information Microsoft-Windows... 35 The time service is now sync...
Get-EventLog
cmdlet 使用 LogName 参数来指定系统事件日志。 Newest 参数返回五个最近的事件。
示例 3:查找事件日志中特定数量条目的所有源
此示例演示如何查找系统事件日志中 1000 个最新条目中包含的所有源。
$Events = Get-EventLog -LogName System -Newest 1000
$Events | Group-Object -Property Source -NoElement | Sort-Object -Property Count -Descending
Count Name
----- ----
110 DCOM
65 Service Control Manager
51 Microsoft-Windows-Kern...
14 EventLog
14 BTHUSB
13 Win32k
Get-EventLog
cmdlet 使用 LogName 参数指定系统日志。 Newest 参数选择 1000 个最近的事件。 事件对象存储在 $Events
变量中。 $Events
对象沿管道向下发送到 Group-Object
cmdlet。
Group-Object
使用 Property 参数按源分组对象,并计算每个源的对象数。 NoElement 参数从输出中删除组成员。
Sort-Object
cmdlet 使用 Property 参数按每个源名称的计数进行排序。
Descending 参数按从高到低的计数对列表进行排序。
示例 4:从特定事件日志获取错误事件
此示例从系统事件日志中获取错误事件。
Get-EventLog -LogName System -EntryType Error
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
13296 Jan 16 13:53 Error DCOM 10016 The description for Event ID '10016' in Source...
13291 Jan 16 13:51 Error DCOM 10016 The description for Event ID '10016' in Source...
13245 Jan 16 11:45 Error DCOM 10016 The description for Event ID '10016' in Source...
13230 Jan 16 11:07 Error DCOM 10016 The description for Event ID '10016' in Source...
Get-EventLog
cmdlet 使用 LogName 参数指定系统日志。 EntryType 参数筛选事件以仅显示 Error 事件。
示例 5:使用 InstanceId 和 Source 值从事件日志中获取事件
此示例从特定 InstanceId 和 Source 的系统日志中获取事件。
Get-EventLog -LogName System -InstanceId 10016 -Source DCOM
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
13245 Jan 16 11:45 Error DCOM 10016 The description for Event ID '10016' in Source...
13230 Jan 16 11:07 Error DCOM 10016 The description for Event ID '10016' in Source...
13219 Jan 16 10:00 Error DCOM 10016 The description for Event ID '10016' in Source...
Get-EventLog
cmdlet 使用 LogName 参数指定系统日志。 InstanceID 参数选择具有指定实例 ID 的事件。 Source 参数指定事件属性。
示例 6:从多台计算机获取事件
此命令从三台计算机上的系统事件日志中获取事件:Server01、Server02 和 Server03。
Get-EventLog -LogName System -ComputerName Server01, Server02, Server03
Get-EventLog
cmdlet 使用 LogName 参数指定系统日志。 ComputerName 参数使用逗号分隔的字符串列出要从中获取事件日志的计算机。
示例 7:获取消息中包含特定单词的所有事件
此命令从系统事件日志获取事件消息中包含特定单词的所有事件。 指定的 Message 参数的值可能包含在消息的内容中,但不显示在 PowerShell 控制台上。
Get-EventLog -LogName System -Message *description*
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
13821 Jan 17 19:17 Error DCOM 10016 The description for Event ID '10016'...
13820 Jan 17 19:16 Error DCOM 10016 The description for Event ID '10016'...
13819 Jan 17 19:08 Error DCOM 10016 The description for Event ID '10016'...
Get-EventLog
cmdlet 使用 LogName 参数来指定系统事件日志。 Message 参数指定要在每个事件的消息字段中搜索的单词。
示例 8:显示事件的属性值
此示例演示如何显示事件的所有属性和值。
$A = Get-EventLog -LogName System -Newest 1
$A | Select-Object -Property *
EventID : 10016
MachineName : localhost
Data : {}
Index : 13821
Category : (0)
CategoryNumber : 0
EntryType : Error
Message : The description for Event ID '10016' in Source 'DCOM'...
Source : DCOM
ReplacementStrings : {Local,...}
InstanceId : 10016
TimeGenerated : 1/17/2019 19:17:23
TimeWritten : 1/17/2019 19:17:23
UserName : username
Site :
Container :
Get-EventLog
cmdlet 使用 LogName 参数来指定系统事件日志。 Newest 参数选择最新的事件对象。 对象存储在 $A
变量中。 $A
变量中的对象沿着管道发送到 Select-Object
cmdlet。
Select-Object
将 Property 参数与星号(*
)一起使用来选择所有对象的属性。
示例 9:使用源和事件 ID 从事件日志中获取事件
此示例获取指定 Source 和 Event ID 的事件。
Get-EventLog -LogName Application -Source Outlook | Where-Object {$_.EventID -eq 63} |
Select-Object -Property Source, EventID, InstanceId, Message
Source EventID InstanceId Message
------ ------- ---------- -------
Outlook 63 1073741887 The Exchange web service request succeeded.
Outlook 63 1073741887 Outlook detected a change notification.
Outlook 63 1073741887 The Exchange web service request succeeded.
Get-EventLog
cmdlet 使用 LogName 参数指定应用程序事件日志。 Source 参数指定应用程序名称 Outlook。 对象沿管道向下发送到 Where-Object
cmdlet。 对于管道中的每个对象,Where-Object
cmdlet 使用变量 $_.EventID
将 Event ID 属性与指定的值进行比较。 对象沿管道向下发送到 Select-Object
cmdlet。 Select-Object
使用 Property 参数选择要在 PowerShell 控制台中显示的属性。
示例 10:按属性获取事件和分组
Get-EventLog -LogName System -UserName NT* | Group-Object -Property UserName -NoElement |
Select-Object -Property Count, Name
Count Name
----- ----
6031 NT AUTHORITY\SYSTEM
42 NT AUTHORITY\LOCAL SERVICE
4 NT AUTHORITY\NETWORK SERVICE
Get-EventLog
cmdlet 使用 LogName 参数指定系统日志。 UserName 参数包括星号(*
)通配符,用于指定用户名的一部分。 事件对象沿管道向下发送到 Group-Object
cmdlet。 Group-Object
使用 Property 参数指定 UserName 属性用于对对象进行分组,并计算每个用户名的对象数。 NoElement 参数从输出中删除组成员。 对象沿管道向下发送到 Select-Object
cmdlet。
Select-Object
使用 Property 参数选择要在 PowerShell 控制台中显示的属性。
示例 11:获取在特定日期和时间范围内发生的事件
此示例从系统事件日志中获取指定日期和时间范围的 Error 事件。 Before 和 After 参数设置日期和时间范围,但从输出中排除。
$Begin = Get-Date -Date '1/17/2019 08:00:00'
$End = Get-Date -Date '1/17/2019 17:00:00'
Get-EventLog -LogName System -EntryType Error -After $Begin -Before $End
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
13821 Jan 17 13:40 Error DCOM 10016 The description for Event ID...
13820 Jan 17 13:11 Error DCOM 10016 The description for Event ID...
...
12372 Jan 17 10:08 Error DCOM 10016 The description for Event ID...
12371 Jan 17 09:04 Error DCOM 10016 The description for Event ID...
Get-Date
cmdlet 使用 Date 参数指定日期和时间。 DateTime 对象存储在 $Begin
和 $End
变量中。 Get-EventLog
cmdlet 使用 LogName 参数指定系统日志。 EntryType 参数指定 Error 事件类型。 日期和时间范围由 After 参数和 $Begin
变量以及 Before 参数和 $End
变量设置。
参数
-After
获取在指定日期和时间之后发生的事件。 After 参数日期和时间从输出中排除。 输入 DateTime 对象,例如 Get-Date
cmdlet 返回的值。
类型: | DateTime |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-AsBaseObject
指示此 cmdlet 为每个事件返回标准 System.Diagnostics.EventLogEntry 对象。 如果没有此参数, Get-EventLog
将返回具有其他 EventLogName、Source 和 InstanceId 属性的扩展 PSObject 对象。
若要查看此参数的效果,请通过管道将事件传递给 Get-Member
cmdlet,并检查结果中的 TypeName 值。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-AsString
指示此 cmdlet 将输出作为字符串返回,而不是作为对象返回。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Before
获取在指定日期和时间之前发生的事件。 Before 参数日期和时间从输出中排除。 输入 DateTime 对象,例如 Get-Date
cmdlet 返回的值。
类型: | DateTime |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-ComputerName
此参数指定远程计算机的 NetBIOS 名称、Internet 协议 (IP) 地址或全限定域名 (FQDN)。
如果未指定 ComputerName 参数,Get-EventLog
默认为本地计算机。 该参数还接受以点 (.
) 来指定本地计算机。
ComputerName 参数不依赖于 Windows PowerShell 远程处理。 即使计算机未配置为运行远程命令,也可以将 Get-EventLog
与 ComputerName参数配合使用。
类型: | String[] |
别名: | Cn |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-EntryType
以字符串数组指定此 cmdlet 获取的事件的条目类型。
此参数的可接受值为:
- 错误
- Information
- FailureAudit
- SuccessAudit
- 警告
类型: | String[] |
别名: | ET |
接受的值: | Error, Information, FailureAudit, SuccessAudit, Warning |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Index
指定要从事件日志中获取的索引值。 该参数接受以逗号分隔的值字符串。
类型: | Int32[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-InstanceId
指定要从事件日志中获取的实例 ID。 该参数接受以逗号分隔的值字符串。
类型: | Int64[] |
Position: | 1 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-List
显示计算机上的事件日志列表。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-LogName
指定一个事件日志的名称。 若要查找日志名称,请使用 Get-EventLog -List
。 允许使用通配符。 此参数是必需的。
类型: | String |
别名: | LN |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | True |
-Message
指定事件消息中的字符串。 可以使用此参数来搜索包含特定单词或短语的消息。 允许使用通配符。
类型: | String |
别名: | MSG |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | True |
-Newest
从最新的事件开始,获取指定的事件数。 需要事件数,例如 -Newest 100
。 指定返回的最大事件数。
类型: | Int32 |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Source
以字符串数组指定写入此 cmdlet 获取的日志的源。 允许使用通配符。
类型: | String[] |
别名: | ABO |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | True |
-UserName
以字符串数组指定与事件关联的用户名。 输入名称或名称模式,例如 User01
、User*
或 Domain01\User*
。 允许使用通配符。
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | True |
输入
None
不能通过管道将输入传递给 Get-EventLog
。
输出
System.Diagnostics.EventLogEntry. System.Diagnostics.EventLog. System.String
如果指定了 LogName 参数,则输出是 System.Diagnostics.EventLogEntry 对象的集合。
如果仅指定 List 参数,则输出是 System.Diagnostics.EventLog 对象的集合。
如果同时指定了 List 和 AsString 参数,则输出是 System.String 对象的集合。
备注
Windows 预安装环境(Windows PE)不支持 cmdlet Get-EventLog
和 Get-WinEvent
。