このページの本文へ

前へ 1 2 次へ

Windows Info 第177回

Windowsマシンの電源関係を制御する「Powercfg」コマンドを極める

2019年06月16日 10時00分更新

文● 塩田紳二 編集● ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

電源プランを変更するためのサブコマンド

 次の表では電源プラン関連のサブコマンドを示す。

 Powercfgでは、電源プランとその中の設定項目はすべてGUID(Globally Unique Identifier)と呼ばれる128bit(16バイト)の数値で表現される。設定項目は、「サブグループ」と呼ばれるGUIDでさらにカテゴリー化されている。これらを表示するには、「/Query」サブコマンド(省略形として/Qが使える)を使うが、このサブコマンドは、電源プランGUIDとサブグループGUIDを指定して表示する設定項目を限定できる。

 GUIDは128bitの数値で、コマンドラインでは16進数表記にしたマイクロソフトのGUID表記形式で表されるものの、36文字で人間が正しく扱うのはちょっと困難だ。それで、いくつかのGUIDにはエイリアスと呼ばれる「名前」が付けられている。これを表示するのが「/ALIASES」サブコマンドだ。

 Powercfgのヘルプは、一般的なサブコマンドのみを表示するもので、実際には、もっとサブコマンドがある。表でグレーの網かけをした部分が、そうした隠しサブコマンドである。また、/QUERYで表示されるGUIDもGUIで設定できるものに限られており、実際には、電源プランには大量の設定項目がある。これらを表示させるのが/QHサブコマンドだ。同様に/ALIASHサブコマンドを使うと、/QHで表示される項目のエイリアスも表示する。

 ただし、注意しておきたいのは、/QHで表示される電源設定に関しては、もともとユーザーによる変更を想定していないため、できるだけ触らないようにすることだ。バッテリ駆動しないサーバーなどでは、省電力機能が問題になる場合に変更することがあるが、通常は変更する必要がない。意味や影響を理解せずに変更すると、消費電力が大きくなってしまうなどの問題が発生する可能性がある。

 なお、設定がおかしくなってしまったときには、すべてをデフォルト値に戻す「/RESTOREDEFAULTSCHEMES」が利用できる。これは、ユーザーが追加した電源プランなども消えてしまうので利用には注意が必要だ。

 さて、電源プランの変更だが、/SETACTIVEで電源プランを切り替え、「/SETACVALUEINDEX」(AC動作時の設定値)、「/SETDCVALUEINDEX」(DC動作時の設定値)で設定値を変更する。設定値の範囲などは、/Qで表示される各項目に表示されている。

/Qの出力は、現在の設定値を示すとともに設定値の範囲や種類も教えてくれる。設定値は、大きく列挙型と最大最小型があり、前者は指定された数値を、後者は最大値と最小値の間の数値を増分単位で指定する

 このとき、問題になるのは、多くの電源プランサブコマンドでは、対象となる電源プランを指定しなければならないことだ。現在有効な電源プランは「/GETACTIVESCHEME」で得られる。バッチファイルなどを使って電源設定を変更する場合には、引数にGUIDを指定する必要がある。このとき「SCHEME_CURRENT」というエイリアスが利用できる。たとえば、バッテリ利用時に液晶を閉じたときにスリープしないように設定するには、

powercfg /SETDCVALUEINDEX SCHEME_CURRENT SUB_BUTTONS LIDACTION 0

とする。これをスリープに戻すには、

powercfg /SETDCVALUEINDEX SCHEME_CURRENT SUB_BUTTONS LIDACTION 1

とする。

 変更前の設定値を保存して戻すのは、ちょっと面倒だ。というのは、/SETDCVALUEINDEX、/SETACVALUEINDEXは、0x形式の16進数を理解しないからだ。これに対して、/Queryサブコマンドでは、常に16進数表現を返す。なので、cmd.exe組み込みのforコマンドを使って、以下のリストのような処理をするしかない。

 Windowsの電源プランは、一定の設定を使い続ける場合には、電源プランを設定しておいて、切り替えればいいのだが、1項目だけ変更してあとで戻すといった操作は結構面倒だ。このとき、バッチファイルを作っておいて、必要に応じて切り替えればよい。

rem 現在の設定値を環境変数savevalに保存
for /F "usebackq tokens=4" %%i in (`powercfg /q SCHEME_CURRENT SUB_BUTTONS LIDACTION ^| find "現在の DC 電源設定のインデックス:"`) do set saveval=%%i
rem その他の処理
echo %saveval%
rem 値の復帰
for /F "usebackq" %%i in (`set /A %saveval%`) do powercfg /SETDCVALUEINDEX SCHEME_CURRENT SUB_BUTTONS LIDACTION %%i

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン