Перечисление WMI в Windows Server 2016 значительно медленнее - PullRequest
0 голосов
/ 26 марта 2019

Я использую простой скрипт 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 Servers занимает 2 секунды. Можно ли что-нибудь сделать для оптимизации перечисления WMI? Заранее спасибо.

1 Ответ

0 голосов
/ 26 марта 2019

Старайтесь не использовать * в ваших WQL-запросах.Никакая фильтрация по любому свойству просто сильно замедляет запросы WMI.Вместо этого укажите точно нужные вам свойства и ничего больше:

SELECT LoadPercentage FROM Win32_Processor WHERE DeviceID='CPU0'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...