Статья описывает скрипт, позволяющий сменить план электропитания (схему электропитания) компьютера из командной строки или bat файла.

Эта возможность необходима для запуска длительных задач (скриптов, командных файлов) на компьютерах, у которых активный план электропитания предполагает переход в спящий режим, как включено на большинстве рабочих станций и ноутбуков.

Например, если мы запустим скрипт полного резервного копирования или загрузки файла с ftp сервера на таком компьютере, может получиться, что компьютер перейдёт в спящий режим по неактивности пользователя раньше, чем скрипт или командный файл закончит свою работу. Чтобы этого не произошло, достаточно вставить две команды: в начале скрипта активировать другой план электропитания, например, «Высокая производительность», а в конце вернуть обратно стандартный «Сбалансированный».

Вывод списка планов электропитания

Первая функция скрипта – перечислить настроенные на локальном компьютере планы электропитания. Активный план (выбранный в настоящий момент) помечается звёздочкой.

Скрипт запускается из командной строки или bat файла без указания параметров (аргументов) от имени администратора.:

cscript.exe //nologo powerplan.js 
* Сбалансированный
  Высокая производительность

Пример выполнения на Windows 10:

Видно, что в настоящий момент выбрана схема питания «Сбалансированная».

Выбор плана электропитания

Когда задан параметр, скрипт активирует план электропитания с этим названием. Сравнение ведётся без учёта регистра, поэтому в параметре можно указывать, например, «сбалансированный» вместо «Сбалансированный».

cscript.exe //nologo powerplan.js Сбалансированный

Как запуск выглядит в bat файле, например, файле резервного копирования:

@echo off
cscript.exe //nologo powerplan.js "Высокая производительность"
rem собственно резервное копирование...
cscript.exe //nologo powerplan.js Сбалансированный

Исходный код скрипта JScript

Скрипт установки плана электропитания основан на WMI и написан на JScript.

var power_plan_name = "";
if ( WScript.Arguments.length ) 
    power_plan_name = WScript.Arguments(0);

var wmi = GetObject("winmgmts:\\\\.\\root\\CIMV2\\Power");
var items = wmi.ExecQuery("SELECT * FROM Win32_PowerPlan");

var i = new Enumerator(items);
for (; !i.atEnd(); i.moveNext() ) {
    var plan = i.item();
    if ( power_plan_name == "" ) {
        WScript.Echo( (plan.IsActive ? "* " : "  ") + plan.ElementName);
        continue;
    }
    if ( plan.ElementName.toLowerCase() == power_plan_name.toLowerCase() ) {
        if ( !plan.IsActive )
            plan.Activate();
        WScript.Quit(0);
    }
}
if ( power_plan_name != "" ) {
    WScript.Echo("ERROR: план '" + power_plan_name + "' не найден");
    WScript.Quit(1);
}

Запуск скрипта

При одновременном запуске двух скриптов, сменяющих активную схему электропитания, возможна ситуация, что скрипт, который закончится раньше, вернёт исходный план электропитания до того, как завершится второй скрипт.

Но для обычных рабочих станций и ноутбуков это крайне редкая ситуация, а если на данном компьютере планируется постоянная работа многих скриптов, то лучше оставить его включенным постоянно.

Скрипт проверен на WIndows 7, Windows 8, Windows 10.

Использование POWERCFG для смены схемы управления питанием

Другой вариант выполнения этих же действий – через POWERCFG.EXE, например, получение списка планов электропитания через powercfg.exe -list:

Существующие схемы управления питанием (* - активные)
-----------------------------------
GUID схемы питания: 381b4222-f694-41f0-9685-ff5bb260df2e  (Сбалансированный)
GUID схемы питания: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c  (Высокая производительность)
GUID схемы питания: a1841308-3541-4fab-bc81-f71556f20b4a  (Экономия энергии) *

Здесь не требуется программирование, но необходимо анализировать вывод программы и запоминать GUID схемы питания, что менее удобно. Например, чтобы выбрать другую схему, нужно ввести команду:

POWERCFG /SETACTIVE <SCHEME_GUID>

Проблемы и решения

Если скрипт не находит схемы электропитания (список схем управления питанием не содержит ни одной записи), проверьте, что он запущен от имени администратора.

Скрипт смены плана электропитания
Метки:        

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

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