我正在尝试快速显示窗口事件日志中最后 ~ 天的所有事件,其中包含 Power Shell 中的某个字符串。
我找到了用于列出事件的 powershell 命令,但我基本上想为特定文本“GREP”它们。
我需要使用 powershell,因为目标是 Windows Server 2016 Hyper-V,但我认为能够在任何带有 powershell 的机器上快速搜索最近的事件也非常有用。
为了显示可用的日志,我运行:
PS C:\Users\Administrator> Get-EventLog -List
Max(K) Retain OverflowAction Entries Log
------ ------ -------------- ------- ---
20,480 0 OverwriteAsNeeded 1,113 Application
20,480 0 OverwriteAsNeeded 0 HardwareEvents
512 7 OverwriteOlder 0 Internet Explorer
20,480 0 OverwriteAsNeeded 0 Key Management Service
512 7 OverwriteOlder 1,539 Microsoft-ServerManagementExperience
20,480 0 OverwriteAsNeeded 28,667 Security
20,480 0 OverwriteAsNeeded 4,857 System
15,360 0 OverwriteAsNeeded 3,654 Windows PowerShell
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我的目标日志被称为应用程序 …
遇到错误或问题后,我想快速查看过去几分钟的事件,看看是否有任何有用的信息。问题是,我不知道哪个特定日志可能包含我正在查找的事件,所以我只想显示所有这些事件。我想使用 powershell,因为打开事件查看器和创建过滤器需要很长时间,而且将命令复制并粘贴到 powershell 中的速度越快,我需要筛选的事件就越少。我不想记录事件发生的确切时间,只是一个相对时间。
例如,我知道如何从单个Windows 事件日志中获取最近 n 分钟的事件,Get-EventLog -LogName System -After (Get-Date).AddMinutes(-10) | Format-Table -AutoSize -Wrap但正如文档所述:
-LogName
指定一个事件日志的名称。要查找日志名称,请使用 Get-EventLog -List。不允许使用通配符。此参数是必需的。
所以我的想法是我可以迭代所有日志名称,EventLog在每个日志名称上运行并连接结果。