Однако в течение последних месяцев мне часто задавали дополнительные вопросы об этой утилите, ведь Powercfg — единственное средство, позволяющее подготовить сценарий для автоматической установки Windows и при этом задать особые настройки энергопотребления. Далее я покажу, как с помощью Powercfg сделать так, чтобы Windows информировала пользователя об уровне заряда батарей.

Как отмечалось ранее, параметр /x очень хорош для управления четырьмя настройками: выбором времени, когда нужно уменьшить яркость экрана; временем ожидания (в минутах) при отсутствии активности перед переходом в режим ожидания и переходом в режим сна; временем отключения диска. Но существует много других параметров тайм-аута/оповещения: например, при каком проценте разряда батареи операционная система должна оповестить пользователя; какой процент считать «критическим» уровнем заряда батареи; нужно ли включать режим адаптивной яркости дисплея. Чтобы настроить эти режимы с помощью Powerfcg, используются параметры -setacvalueindex и -setdcvalueindex.

Разберем пример. По умолчанию Windows предупреждает о разряде батарей при достижении уровня 10%, но очень часто энергия батареи полностью иссякает спустя всего пару минут после достижения этого порога. Поэтому полезно изменить уровень предупреждения на 20%. Общий вид команды следующий:

powercfg -setdcvalueindex (scheme GUID, идентификатор плана)
(sub-GUID указывает семейство настроек, которые предстоит
изменить) (setting-GUID указывает конкретную настройку,
которая будет изменена) (желаемое значение)

Количество указываемых значений велико, а выбор их не очевиден. Поэтому сначала посмотрим на окончательный вид команды, а затем будет показано, как он получен:

powercfg -setdcvalueindex 381b4222-f694–41f0–9685-ff5bb260df2e
e73a048d-bf27–4f12–9731–8b2076e8891f 8183ba9a-e910–48da-
8769–14ae6dc1170a 20

Думаю, теперь понятно, почему вначале я полагал, что никто не захочет браться за эту работу. Но после подробного разбора данного примера составлять другие команды будет проще. В приведенном примере 381b4222-f694–41f0–9685-ff5bb260df2e — идентификатор GUID, который указывает на необходимость внести изменения в сбалансированный план управления электропитанием Balanced (а не режим с высокой производительностью, — High performance, или энергосберегающий — Power saver). Два идентификатора GUID, e73a048d-bf27–4f12–9731–8b2076e8891f и 8183ba9a-e910–48da-8769–14ae6dc1170a, в сущности, информируют операционную систему о намерении изменить настройку батареи, и эта настройка указывает процент остаточного заряда, при котором происходит событие low power battery («разряжено»). Наконец, число 20 задает порог разряда батареи — 20%.

Очевидно, намерением разработчиков Microsoft было построить иерархию объектов (значение настройки батареи в рамках общего мониторинга и управления батареей внутри плана управления электропитанием, содержащим много других показателей, кроме сведений о батарее), назначить им идентификаторы GUID, легко обнаруживаемые программистами, и обеспечить управление ими со стороны Powercfg. Поэтому, чтобы составить одну из команд (-setdcvalueindex или -setacvalueindex), нужно найти GUID плана управления электропитанием (Powercfg -l), sub-GUID, относящийся к общей области, которой предстоит управлять (в данном примере e73a048d-bf27–4f12–9731–8b2076e8891f — sub-GUID для battery), GUID конкретной настройки (в данном примере 8183ba9a-e910–48da-8769–14ae6dc1170a — low battery charge), и, наконец, любое пороговое значение (в данном случае 20). В документации Powercfg утверждается, что можно вводить шестнадцатеричные значения с префиксом 0 x, но мне этого сделать не удалось.

Остается вопрос, где найти sub-GUID и setting-GUID. Проще всего получить текущие настройки с помощью команды Powercfg -q. Она выдает большой объем информации. Ищите строки, относящиеся к нужным настройкам, например

Power Setting GUID: 8183ba9a-e910–48da-8769–14ae6dc1170a
(Low battery level)

Получен идентификатор GUID для разряженной батареи. Но где sub-GUID для «группы» батареи? Прокручивая вверх от этой строки, находим:

Subgroup GUID: e73a048d-bf27–4f12–9731–8b2076e8891f(Battery)

Осваивайте утилиту

Составить команду -setdcvalueindex или -setacvalueindex непросто, но иногда это единственный выход. Опробовав этот пример на ноутбуке, можно научиться составлять команды Powercfg для любых целей.

Марк Минаси (mark@minasi.com) — редактор Windows IT Pro, MCSE и автор книги Mastering Windows Server 2003 (издательство Sybex)