【发布时间】: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 枚举吗?提前致谢。
【问题讨论】:
-
如果这些 sugguestions 没有帮助,而且它只在特定的机器上,我会认为该机器的网络堆栈是问题,而不是 WMI。
标签: performance vbscript wmi enumeration windows-server-2016