コマンドラインから電源オフや休止を実行するTech TIPS

バッチ処理やリモート・アクセスしている状況で、コンピュータを再起動/終了したいことがある。GUIが利用できない状況で、コンピュータを休止状態にしたいことがある。コマンド・プロンプトからshutdownコマンドなどで電源関連のタスクを制御できる。

» 2006年01月14日 05時00分 公開
「Tech TIPS」のインデックス

連載目次

対象OS:Windows XP/Windows Server 2003



解説

 Windowsの電源モードには、電源オン/電源オフ/スタンバイ/休止状態という4つのパワー・ステートが定義されている。これに再起動を加えたものが、Windowsユーザーが意識して行う電源操作のすべてである。

 省電力状態としてまとめられるスタンバイと休止状態の違いについて、簡単に解説しておこう。スタンバイとは、メモリ内容を保持したまま必要最低限の消費電力で動作するモードである。休止状態は、メモリ状態やデバイスのステータスといったコンピュータの状態をハードディスク上のファイル(hiberfil.sys)にそのまま保存し、電源オフにするモードである。復帰時には、hiberfil.sysから休止状態に入る直前の状態を復元する。

 ユーザーはコントロール・パネルの「電源オプションのプロパティ」を使って電源オプションを設定し、[スタート]−[シャットダウン]で選択できる電源状態としてパワー・ステートをソフトウェア的に操作できる。

 しかし、バッチ処理やtelnetでのリモート・アクセス時のような、キャラクタ・ベースのインターフェイスでは、[スタート]−[シャットダウン]の操作を行うことは困難である(WSHによるユーザー操作のエミュレーションは可能だが、高いスキルが必要となる)。

 そこで、電源オフ/再起動を制御できるshutdownコマンドと、スタンバイ/休止状態を制御できるpowrprof.dllの利用法を解説する。バッチ処理後にスタンバイに移行したり、リモートで加えたシステム構成の変更を反映させるために再起動したりする用途などに活用できるだろう。

操作方法

 Windows OSのパワー・ステートを制御するには、外部コマンドであるshutdown.exeと、powrprof.dllを利用する。電源オフと再起動はshutdown.exeを、休止状態/スタンバイへの移行はpowrprof.dllをrundll32.exeから実行することにより行う。

●電源オフと再起動を行う

 電源オフと再起動には、Windows OSにデフォルトでインストールされているshutdown.exeコマンドを使用する。例えば即座に電源オフにしたい場合、コマンド・プロンプトで次のように実行すればよい。

C:\>shutdown -s -t 0



 「-s」がシャットダウン(電源オフ)、「-t 0」がゼロ秒のタイムアウトでの実行を指示するオプションである。タイムアウトを指定しないで実行すると、次のダイアログが表示され、カウントダウンされる。タイムアウトを指定しない場合、デフォルトでは30秒でシャットダウンが始まる。

shutdownコマンドの警告ダイアログ shutdownコマンドの警告ダイアログ
shutdownコマンドを実行すると、タイムアウトまでの時間、shutdownを実行したユーザー名、実行時に指定されたメッセージが表示される。

 また、同様に即座に再起動を行う場合には次のように実行する。

C:\>shutdown -r -t 0



 shutdownコマンドには、リモートのコンピュータの電源を管理するものなど、以下の表のようなオプションがある。

オプション 機能
-i GUIインターフェイスを表示する。GUIインターフェイスでのデフォルト・タイムアウトは20秒である
-l ログオフする
-s シャットダウン(電源オフ)する
-r 再起動する
-a shutdown実行の中止(Abort)
-m \\コンピュータ名 リモート・コンピュータにログオフ/電源オフ/再起動を指示する。ログオフ(-l)オプションとは併用できない
-t xx 処理開始までのタイムアウトをxx秒で指定する。デフォルトは30秒
-c "コメント" イベントログに書き込まれるコメントを記入する
-f 実行中のプロセスを警告なしで閉じる
-d uあるいはp:xx:yy イベントログに書き込む電源オフ/再起動の理由コードを指示する。ユーザー・コードなら「u」、計画されたコードなら「p」をサブオプションに指示し、重大な理由コードをxxに、重大でない理由コードをyyに記入する

●休止状態とスタンバイを行う

 休止状態とスタンバイは、shutdownコマンドではなく、rundll32.exeからオプション付きでpowrprof.dllを呼び出すことにより、実行できる。ただし今回紹介するコマンドでは休止状態にするかスタンバイにするかは指定できない。休止状態が有効になっていれば休止状態になり、無効ならスタンバイになる。

 休止状態を有効にするかどうかは、[コントロール パネル]−[電源オプション]の[休止状態]タブで設定できる。

休止状態の有効/無効を切り替える 休止状態の有効/無効を切り替える
今回紹介するコマンドでは、休止状態が有効になっていれば休止状態に、無効ならスタンバイになる。休止状態は[コントロール パネル]−[電源オプション]の[休止状態]タブで有効/無効にできる。
  (1)ここをクリックする。
  (2)このチェックボックスをオンにすると、休止状態が有効になる。

 設定が完了したら、休止状態/スタンバイへ入るには次のコマンドを実行する。

C:\>%windir%\System32\rundll32.exe powrprof.dll,SetSuspendState



 休止状態となったコンピュータは、電源ボタンを押して起動させることにより、休止状態に入る直前の状態に復帰する。

 ちなみに、ACPI機能を備えたマザーボードでWake On LAN機能を有効にしてあれば、休止状態に入ったPCでも、ネットワーク経由で起動することが可能である。ただしBIOSとデバイス・マネージャでのWake On LAN設定とパケット送出のためのツールなどを準備する必要がある(詳細は右上の関連記事を参照)。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。