WMI 查询 - 2008 性能计数器警报

Posted

技术标签:

【中文标题】WMI 查询 - 2008 性能计数器警报【英文标题】:WMI Query - 2008 Performace counters alerts 【发布时间】:2011-11-16 16:27:07 【问题描述】:

我在 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'")

它正确返回计数。

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

【问题讨论】:

所有的日志都保存在这里C:\Windows\System32\winevt\Logs,我可以看到Application.evtx日志文件,还有Microsoft-Windows-Diagnosis-PLA%4Operational。 evtx 日志文件。我仍然对为什么查询应用程序日志返回结果而另一个不返回感到困惑。我不确定是不是因为文件名中的“%4”编码字符! 【参考方案1】:

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

【讨论】:

我不是在寻找针对这些事件的跟踪机制。我只想针对这个日志写一个简单的查询。它适用于应用程序事件日志。

以上是关于WMI 查询 - 2008 性能计数器警报的主要内容,如果未能解决你的问题,请参考以下文章

通过 WMI 访问应用程序的自定义性能计数器

C# WMI、性能计数器和 SNMP 哦,天哪!

使用刷新对象收集 wmi 性能计数器

如何将 RDS 性能洞察的计数器指标发送到 cloudwatch 和 Grafana

通过 WMI 监控 SQL Server 上每秒的批处理请求

Windows Svr 2008 Ent R2 性能计数器显示不全