【问题标题】:Enumerating WMI on Windows Server 2016 is significantly slower在 Windows Server 2016 上枚举 WMI 速度明显较慢
【发布时间】:2019-03-26 17:17:53
【问题描述】:

我正在使用一个简单的 vb 脚本来获取 CPU0 的负载百分比,但 WMI 枚举在 Windows Server 2016 上比旧版本慢得多,我需要优化速度。

这是我的简短脚本:

Option Explicit
Dim objWMIService, processItems, objitem, loadpercentage
loadpercentage= 0

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")

Set processItems = objWMIService.ExecQuery("SELECT * FROM Win32_Processor _
                   WHERE DeviceID='CPU0'", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)

For Each objItem In processItems 
    loadpercentage =  objItem.LoadPercentage
Next

在设置 processItems 和进入 For Each 循环之间有 10 秒的延迟。旧版本的 Windows 服务器上的相同脚本需要 2 秒。可以做些什么来优化 WMI 枚举吗?提前致谢。

【问题讨论】:

标签: performance vbscript wmi enumeration windows-server-2016


【解决方案1】:

尽量不要在 WQL 查询中使用 *。不按任何属性进行过滤只会大大降低 WMI 查询的速度。取而代之的是,准确地指定您需要的属性,而不是其他:

SELECT LoadPercentage FROM Win32_Processor WHERE DeviceID='CPU0'

【讨论】:

  • 感谢您的回复。我试过了,但不幸的是没有明显的区别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
  • 1970-01-01
  • 2016-04-13
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
相关资源
最近更新 更多