我在Windows 2008服务器上有一组性能计数器警报,我将其配置为在警报触发后在事件查看器中写入。
它会在此事件查看器中写入“应用程序和服务日志/ Microsoft / Windows / Diagnosis-PLA / Operational”
我正在尝试在vbscript文件中针对此事件查看器编写WMI查询以读取其中的事件。
这是我的问题:
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("select * from Win32_NtLogEvent where Logfile = 'Microsoft-Windows-Bits-Client%4Operational'")
问题是:当我检查colItems.count时,它返回零,但是我知道那里有事件,当我导航到事件查看器时我可以看到它们。
如果我查询'Application'事件查看器,同样的查询工作正常:
Set colItems = objWMIService.ExecQuery("select * from Win32_NtLogEvent where Logfile = 'Application'")
它正确返回计数。
知道第一个查询中的问题是什么吗?
答案 0 :(得分:1)
WMI不支持Windows事件日志的事件跟踪。应用程序事件日志(您的查询正在运行)是一个不使用Windows事件技术的经典事件日志。 Win32_NtLogEvent公开了经典事件日志中记录的事件,但是不公开来自最新事件日志(在Vista中引入)的事件。但是,您可以使用PowerShell cmdlet Get-WinEvent 读取这些日志。