我有一台配置为接收来自大量客户端 (Windows 7\8.1) 的转发事件的 Windows Server 2008 R2。它从 WLAN-Autoconfig 源接收事件 ID 范围为 8000-8006 的事件(服务器没有源,但可以将其添加到订阅中以便能够从该源接收)。
服务器安装的是美式英语,区域设置\文化为挪威语。客户端安装的是 NB-no 挪威语,区域设置\文化为挪威语。
我遇到的第一个问题是服务器无法正确读取事件。它给出了以下错误:
无法找到来自源 Microsoft-Windows-WLAN-AutoConfig 的事件 ID 8000 的描述。引发此事件的组件未安装在您的本地计算机上,或者安装已损坏。您可以在本地计算机上安装或修复该组件。
如果事件源自另一台计算机,则显示信息必须与事件一起保存。
这不是一个大问题,因为活动对象和内容仍然到达并且可以用于收集它的目的。
但是后来,当我尝试编写 Powershell 脚本来获取和过滤这些事件时,我遇到了一些问题。
首先我尝试了这个方法:
Get-WinEvent -ComputerName $ServerName -FilterHashtable @{logname = 'ForwardedEvents'; id = 8000, 8001, 8002, 8003; StartTime = $StartDate; EndTime = $EndDate } -MaxEvents 3
但此查询未返回任何值。出于某种原因,从过滤器中删除“StartTime”和“EndTime”使其工作正常。确信“-FilterHashTable”选项不起作用,我尝试使用“-FilterXML”选项,但为此我必须在事件日志中创建过滤器以查找语法。
我登录到服务器,打开事件查看器,并使用以下选项从 ForwardedEvents-log 创建自定义视图:
日志 = ForwardedEvents
ID = 8000-8003
开始时间 = 某个日期
结束时间 = SomeDateLater
令我惊讶的是,它没有返回任何事件,尽管我可以在事件日志中看到很多应该与该过滤器匹配的事件。
尝试不同的过滤器得到了以下结果:
测试 1
日志:转发事件
ID:8000-8003
StartDate:未填写
EndDate:已填写
结果:获取所有结果(甚至超过结束日期)
测试 2
日志:转发事件
ID:8000-8003
开始日期:已填写
EndDate:未填写
结果:无结果
测试 3
日志:转发事件
ID:所有事件 ID
开始日期:已填写
EndDate:未填写
结果:获取 ID 为 111 的事件(我认为这是新客户的订阅开始通知)
测试 4
日志:转发事件
ID:所有事件 ID
开始日期:已填写
EndDate:已填写
结果:获取 ID 为 111 的事件(我认为这是新客户的订阅开始通知)
我的问题是:
为什么会发生这种情况?我该如何解决?