Статья рассказывает, как написать скрипт для определения загрузки процессора в процентах на Windows платформе. Это может быть полезно, например, для мониторинга нагрузки процессора на компьютере.

Код скрипта загрузки процессора на JScript и графики процессора (диспетчер задач)

Скрипт написан на WSH JScript с использованием WMI. Его можно запустить из командной строки или bat файла.

Скрипт загрузки процессора, включая все ядра

Win32_PerfFormattedData_PerfOS_Processor class позволяет считать загрузку всех процессоров, включая логические процессоры. Например, на картинке вышу показаны логические процессоры (ядра). Определение загрузки процессора реализуется следующим скриптом:

var computer_name = "."; 
var wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\"+
    computer_name+"\\root\\cimv2");
var p = wmi.ExecQuery("select * from Win32_PerfFormattedData_PerfOS_Processor");

var e = new Enumerator(p);
for (; !e.atEnd(); e.moveNext()){
    WScript.Echo(e.item().Name + 
        " " + e.item().PercentProcessorTime);
}

Этот скрипт выводит информацию по всем процессорам (ядрам) компьютера (запускаем как CSCRIPT //NOLOGO cpu_load_all.js):

0 44
1 20
2 8
3 63
_Total 34

Этот вывод означает, что на компьютере имеется четыре процессора (ядра), в первых четырёх строках указана загрузка для каждого из них (соответственно, 44%, 20%, 8% и 63%), и последняя строка содержит общую загрузку процессора 34%.

Скрипт загрузки процессора – общее значение

Если нам нужны значения по ядрам, то надо обрабатывать первые строки. Чаще достаточно только общего процента загрузки процессора, для этого отфильтровываем записи в запросе (Name='_Total'), соответственно, строка для вывода будет одна, и скрипт определения загрузки процессора компьютера преобразуется к следующему виду:

var computer_name = "."; 
var wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\"+
    computer_name+"\\root\\cimv2");
var p = wmi.ExecQuery("select * from Win32_PerfFormattedData_PerfOS_Processor where Name='_Total'");

var e = new Enumerator(p);
WScript.Echo(e.item().PercentProcessorTime);

Вывод CSCRIPT //NOLOGO cpu_load_total.js предельно простой – это общая загрузка процессора в процентах:

11

Т.е. загрузка общая загрузка CPU составляет 11%.

Вывод скрипта определения загрузки процессора в окне командной строки

Как можно развить скрипт:

  • можно добавить проверку значения, например, если значение превышает 85% (e.item().PercentProcessorTime > 85), отправить предупреждение администратору.
  • подставляя в переменную computer_name сетевые имена других компьютеров, можно организовать мониторинг группы серверов на предмет повышенной нагрузки с соответствующим оповещением администратора.

Запуск в bat файле

Для получения и вывода загрузки процессора в командном файле можно запускать этот скрипт той же командой:

CSCRIPT //NOLOGO cpu_load_total.js

Чтобы в bat файле получить значение загрузки, нужно добавить в скрипт команду на передачу значения загрузки в качестве возвращаемого значения (return code):

var computer_name = "."; 
var wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\"+
    computer_name+"\\root\\cimv2");
var p = wmi.ExecQuery("select * from Win32_PerfFormattedData_PerfOS_Processor where Name='_Total'");

var e = new Enumerator(p);
WScript.Echo(e.item().PercentProcessorTime);
WScript.Quit(e.item().PercentProcessorTime);

Теперь, вызывая скрипт в bat файле, можно будет обрабатывать значение загрузки процессора:

cscript //nologo cpu_load_total.js
if errorlevel 85 ...

Файлы для скачивания

Эти и другие скрипты можно скачать по ссылке

См. также

По считыванию информации о состоянии компьютера см. также Получить информацию о дисках

См. Все скрипты с использованием WMI

Наши соцсети

Скрипт загрузки процессора
Метки:     

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *