Jon*_*Jon 4 windows powershell event-log
遇到错误或问题后,我想快速查看过去几分钟的事件,看看是否有任何有用的信息。问题是,我不知道哪个特定日志可能包含我正在查找的事件,所以我只想显示所有这些事件。我想使用 powershell,因为打开事件查看器和创建过滤器需要很长时间,而且将命令复制并粘贴到 powershell 中的速度越快,我需要筛选的事件就越少。我不想记录事件发生的确切时间,只是一个相对时间。
例如,我知道如何从单个Windows 事件日志中获取最近 n 分钟的事件,Get-EventLog -LogName System -After (Get-Date).AddMinutes(-10) | Format-Table -AutoSize -Wrap但正如文档所述:
-LogName
指定一个事件日志的名称。要查找日志名称,请使用 Get-EventLog -List。不允许使用通配符。此参数是必需的。
所以我的想法是我可以迭代所有日志名称,EventLog在每个日志名称上运行并连接结果。
这是一个快速命令,它将迭代每个日志并显示过去十分钟内发生的所有事件(按发生时间排序):
Get-EventLog -List `
| %{Get-EventLog -LogName $_.Log -After (Get-Date).AddMinutes(-10) -ErrorAction Ignore} `
| Sort-Object TimeGenerated | Format-Table -AutoSize -Wrap
Run Code Online (Sandbox Code Playgroud)
或者在一行中做同样的事情:
Get-EventLog -List | %{Get-EventLog -LogName $_.Log -After (Get-Date).AddMinutes(-10) -ErrorAction Ignore} | Sort-Object TimeGenerated | Format-Table -AutoSize -Wrap
Run Code Online (Sandbox Code Playgroud)
Get-EventLog使用已弃用的 Win32 API。结果可能不准确。请改用 Get-WinEvent cmdlet。
推荐的方法 - 它适用于 Microsoft PowerShell 和 Windows Powershell (>=v6),并且使用 FilterHashtable 比上述方法快得多。
Get-WinEvent -FilterHashtable @{LogName='*';StartTime=(Get-Date).AddMinutes(-10)} | Sort-Object TimeCreated
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9192 次 |
| 最近记录: |