treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

Powercfgを使って設定してみる

PCキッティングの途中で電源設定をする時に、GUIから設定していたのですが、前々からコマンドで実行したいと思っていました。
今回調べてみた一部の内容をご報告です。

コマンドpowercfgの.exeと.cpl

コマンドから電源設定をする時には、powercfgコマンドを使用します。

ただ、powercfgコマンド自体は「powercfg.exe」と「powercfg.cpl」の二つがあります。「.cpl」の方は言うまでもなく、

コントロールパネルの電源オプション(GUI)画面を開くコマンドで、実際にコマンドラインからの設定は「powercfg.exe」を使います。

powercfg /listで一覧表示

powercfg.exeコマンドで設定可能な範囲はWindows全体の電源管理全般なので、現在使われている電源設定の他に、設定だけは用意されていて有効になっていない電源設定も操作範囲の対象となります。

Windows環境に用意されている電源設定の一覧は「powercfg /list」で確認できます。

表示されるリスト(GUIDの)一覧の中で、末尾に「*」が付いている設定が現在有効(アクティブ)になっている電源設定となります。

今回は、現在アクティブな設定の設定値を変更する、という簡単なところの操作をpowercfgコマンドで実施してみることにします。

現在の電源設定の設定値を変更するコマンド

powercfgコマンドで可能な全部の操作は「powercfg.exe /?」で確認可能ですが、今回は

 /CHANGE, /X        現在の電源設定の設定値を変更します。

をメインとします。現在の(アクティブな)電源設定内の設定値を変更するオプションです。

「powercfg /change /?」か「powercfg /x /?」のどちらかで、子コマンドのオプションと構文を確認することができます。(/changeと/xは同じ意味なのでどちらも同じヘルプが画面に表示されます。ただし、オプション指定の時に「/」の有無が異なります。)

今回は、この四つの項目を中心にpowercfgで設定値を変更してみます。

「ディスプレイの電源を切る」設定の変更

ディスプレイの電源を切る設定は、ユーザが使う環境とキッティングなどの管理者側の作業で使う時で設定を変えたくなることがあります。

この部分の設定を例えば、電源(ACアダプタ)接続時に5分と設定するには、

powercfg /change monitor-timeout-ac 5

と、コマンドを実行します。
設定の反映を画面で確認すると、

「ディスプレイの電源を切る」項目のうち、「電源に接続」の側が「5分」となっているのが分かります。

同じように、「バッテリ駆動」の側も5分に設定してみます。

powercfg /change monitor-timeout-dc 5

コマンドはよく似ていますが、指定がmonitor-timeout-acからmonitor-timeout-"dc"となっています。

これを実行した後、画面は

「ディスプレイの電源を切る」項目のうち、「バッテリ駆動」の側が「5分」と設定されたことが確認できました。

これを、「適用しない」と設定する場合には、○分を指定する数字の「5」の部分を「0」として同じコマンドを実行することになります。やってみます。

powercfg /change monitor-timeout-ac 0

前述のコマンドの数字を「0」にしただけのコマンドラインを実行すると、

ディスプレイの電源を切る項目のうち、「電源に接続」側が「適用しない」に変更されています。

同じように、DC側もやってみます。

powercfg /change monitor-timeout-dc 0

これを実行すると、

「バッテリ駆動」側の設定も「適用しない」に変更されました。

ちなみに、「/chenge」でなく、「/x」オプションを使ってコマンドを実行する場合には、

powercfg /x /monitor-timeout-ac 5

powercfg /x /monitor-timeout-ac 0

ほとんど書式は同じなのですが、「/monitor-timeout-ac」のように「/」が必要になります。

「コンピュータをスリープ状態にする」設定の変更

次に、「コンピュータをスリープ状態にする」の設定値を変更していきます。

この状態から、コマンドを実行してみます。

powercfg /change standby-timeout-ac 15

使用するオプションは「standby-timeout-ac」、数字を「15」分と指定して、コマンドを実行してみます。

すると、

「コンピュータをスリープ状態にする」の箇所で「電源に接続」の設定値が「15分」に変更されました。

もう一箇所、

powercfg /change standby-timeout-dc 15

「standby-timeout-dc」にして、同じく数字を「15」分指定で実行して、

「コンピュータをスリープ状態にする」の箇所のうち「バッテリ駆動」の部分も「15分」に変更できました。

これを、「適用しない」に変更する場合には、

powercfg /change standby-timeout-ac 0

powercfg /change standby-timeout-dc 0

数字を「0」にしたコマンド実行で、以下のように、

両方が「適用しない」に設定されます。

ちょっとしたことだけど

今回は、「monitor-timeout-ac」「monitor-timeout-dc」「standby-timeout-ac」「standby-timeout-dc」の四つのオプションだけ実施しましたが、このオプションは他にも「disk-timeout-ac」「disk-timeout-dc」と「hibernate-timeout-ac」「hibernate-timeout-dc」の四つがあります。

今回試してはいないのですが、「disk-timeout-ac」「disk-timeout-dc」は恐らく「詳細な電源設定の変更」画面から設定する以下の画面、

この箇所「次の時間が経過後ハードディスクの電源を切る」設定だと思います。

「hibernate-timeout-ac」「hibernate-timeout-dc」は、今回の環境では休止状態を無効化していたので画面表示がありませんでしたが、一定時間経過後にハイバネーションを有効化する設定の操作ができそうです。

powercfgコマンドは最初はとっつきづらいのですが、ちょっとづつやっていくと(GUI画面に左右されることなく)自由自在に電源設定ができるので便利に使えそうです。

特にキッティング時にバッチファイル化するときなんか良い感じに使えるのではないかと思いました。今度、キッティング用バッチファイルの電源設定なんかも考えて観ようと思いました。