我在 Windows 事件日志中查找一些特定事件,如何使用 Powershell 查找它们?

我在 Windows 事件日志中查找一些特定事件,如何使用 Powershell 查找它们?

微软几天前发布的安全补丁可能会导致某些蓝牙设备停止工作。发行说明解释如何检查我们是否会受到影响:我们必须检查事件日志,如果我们发现某些事件,那么我们就受到了影响。

以下是需要寻找的事物:

事件日志:系统
事件来源:BTHUSB 或 BTHMINI
事件 ID:22
名称:BTHPORT_DEBUG_LINK_KEY_NOT_ALLOWED
级别:错误
事件消息文本:您的蓝牙设备尝试建立调试连接。Windows 蓝牙堆栈在未处于调试模式时不允许调试连接。

我不太熟悉 Windows 事件查看器,现在它甚至无法工作,因为另一个错误(耶!)。

因此,我正在尝试编写 Powershell 脚本,但遇到了很多麻烦。首先,我尝试使用Get-EventLog,但我读到它已经过时了,我应该使用Get-WinEvent。无论哪种方式,我都陷入困境,因为我希望找到一些选项来根据发行说明中的​​条件过滤输出,但我找不到正确的参数。我想到的是(根据文档,‘Error’对应级别2):

Get-WinEvent -FilterHashtable @{
    Logname='System'
    ProviderName='BTHUSB','BTHMINI'
    Id=22
    Level=2
}

这会产生一个难看的错误,而通过更改和的值,IdLevel可以工作,所以我认为我的语法没有问题,所有这些可能意味着我不会受到影响。太好了。

不过,我不明白如何精确过滤名称和消息文本。有人能告诉我如何将它们映射到过滤器中的某些选项吗?例如,我已经发现“事件日志”映射到“日志名称”,而“事件源”映射到“提供商名称”。我必须使用什么来表示名称和消息文本?

答案1

您可能会发现 Nirsoft 的完整事件日志视图比 PowerShell 更方便,特别是因为Windows 10 v. 1903 导致事件日志查看器崩溃.尽管微软已经发布了部分修复, 免费的 Nirsoft 工具还提供 MS 日志查看器以外的功能,例如搜索。

相关内容