0

我在 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 时,它返回零,但是我知道那里有事件,当我导航到事件查看器时我可以看到它们。

如果我查询“应用程序”事件查看器,相同的查询可以正常工作:

Set colItems = objWMIService.ExecQuery("select * from Win32_NtLogEvent where Logfile = 'Application'")

它正确返回计数。

知道第一个查询中的问题是什么吗?

4

1 回答 1

1

WMI 不支持 Windows 事件日志的事件跟踪。应用程序事件日志(您的查询对其有效)是不使用 Windows 事件技术的经典事件日志。Win32_NtLogEvent 公开经典事件日志中记录的事件,但它不公开最新事件日志(在 Vista 中引入)中的事件。但是,您可以使用 PowerShell cmdlet Get-WinEvent阅读这些日志。

于 2011-11-17T16:20:09.063 回答