PowerShell从多个Windows事件日志名称中获取错误事件


Get-EventLog一次只能读取一个事件日志名称下的事件。如果你想从多个事件名称中查找事件。你必须像这样在数组中追加信息:

$events = @(Get-EventLog -LogName System -EntryType Error)
$events += Get-EventLog -LogName Application -EntryType Error
$events

这种情况下,可能会优先使用便捷的WMI:它可以同时查询多个事件名称。
下面的例子会从“应用程序”和“系统”名称下获取前100个出错事件。(计算后,如果“应用程序”已经包含了100个错误,就不会返回“系统”日志中的错误,理当如此。)

Get-WmiObject -Class Win32_NTLogEvent -Filter 'Type="Error" and (LogFile="System" or LogFile="Application")' |
Select-Object -First 100 -Property TimeGenerated, LogFile, EventCode, Message

当你把Get-WmiObject换成Get-CimInstance(从Windows PowerShell 3.0后引入的命令)后,令人费解的日期时间格式也会被自动转换成正常的日期和时间。

Get-CimInstance -Class Win32_NTLogEvent -Filter 'Type="Error" and (LogFile="System" or LogFile="Application")' |
Select-Object -First 100 -Property TimeGenerated, LogFile, EventCode, Message

原文链接:Getting Error Events from Multiple Event Logs

荔非苔注:如果你使用的是中文版的操作系统,可能在测试后两个WMI例子时,发现没有返回信息,是不是命令错了。命令没错,是因为WMI的过滤条件的事件类型是基于本地化后的。请把英文“Error”改成中文“错误”即可。

Get-CimInstance -Class Win32_NTLogEvent -Filter 'Type="错误" and (LogFile="System" or LogFile="Application")' |
  Select-Object -First 100 -Property TimeGenerated, LogFile, EventCode, Message
本文链接: https://www.pstips.net/getting-error-events-from-multiple-event-logs.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注