連載
» 2015年09月18日 05時00分 UPDATE

Tech TIPS:コンピューターを設定時刻に自動でシャットダウンする (1/2)

停電や各種メンテナンスの都合で、決まった時刻にPCを自動でシャットダウンしたい場合がある。Windows標準のタスクスケジューラとshutdownコマンドで実現する方法とは?

[島田広道,デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows 7/Windows 8/Windows 8.1/Windows 10/Windows Server 2008 R2/Windows Server 2012/Windows Server 2012 R2



解説

 ある決まった時刻になったらコンピューターをシャットダウンしたい場合がある。例えば電気設備の保守点検に伴う停電などでは、事前に通知された停電開始時刻の前に、コンピューターを自動的にシャットダウンできると便利だ(もちろん、シャットダウンに失敗しないように注意する必要はあるが)。

コンピューターを設定時刻に自動でシャットダウンする コンピューターを設定時刻に自動でシャットダウンする
これはWindows OSの標準機能であるタスクスケジューラとshutdownコマンドを組み合わせて、自動的にシャットダウンを開始させたところ。それほど手間なく実現可能だ。

 他にも、業務完了後にうっかりシャットダウンし忘れたクライアントPCを、決まった時間にシャットダウンしたり、アプリケーションのメモリリークといった不具合がひどくなる前に、サーバーを一定間隔で再起動したり、といったこともありそうだ。

 こうした定時シャットダウン機能は、Windows OSの標準機能であるタスクスケジューラとshutdownコマンドを組み合わせると、それほど手間なく実現できる。

設定方法

 本TIPSでは定時にシャットダウンを実行するために、Windowsの標準機能であるタスクスケジューラを利用する。タスクスケジューラの基本的な使い方については、右上の関連記事を参照していただきたい。

●シャットダウンタスク用のアカウントを用意する

 まず、シャットダウンのタスクを実行するユーザーアカウントを決める。それには専用のローカルアカウントを作成し、ローカルのAdministratorsグループに加えて利用するとよい。特にWindows Serverの場合、シャットダウンを実行するアカウントはデフォルトでAdministrators(あるいはBackup Operatorsなどの)グループに所属している必要がある。

 クライアントWindows OSの場合、管理者ではないアカウントでもシャットダウンのタスクを実行できないことはない。ただ、それには管理ツールの[ローカル セキュリティ ポリシー]で、[セキュリティの設定]−[ローカル ポリシー]−[ユーザー権利の割り当て]−[バッチ ジョブとしてログオン]に、タスクを実行するアカウントを加える必要がある。

 このユーザー権利は、ログオフ(サインアウト)状態でもシャットダウンのタスクを実行するために必要なものだ。詳細は右上の関連記事を参照していただきたい。以下では管理者アカウントを使うという前提で説明する。

●シャットダウンのタスクを作成する

 作成したアカウントでWindowsにログオンしたら、タスクスケジューラの設定画面を開く。それにはコントロールパネルから[システムとセキュリティ]−[管理ツール]をクリックし、[タスク スケジューラ]をダブルクリックする。

 次にタスク作成のウィザードを起動する。それにはタスクスケジューラの左ペインのツリーにある[タスク スケジューラ (ローカル)]を選択してから、右側の操作ペインで[基本タスクの作成]をクリックする。ウィザードが起動したら、以下のように進めてタスクを作成する。

シャットダウンのタスクを作成する(その1) シャットダウンのタスクを作成する(その1)
管理ツールの[タスク スケジューラ]を起動し、右側の操作ペインで[基本タスクの作成]をクリックすると、このウィザードの最初の画面が表示される。
  (1)これから作るタスクの名前を記入する。いったんタスクを作成すると後から変更できないので注意すること。
  (2)タスクの説明を記入する。
シャットダウンのタスクを作成する(その2) シャットダウンのタスクを作成する(その2)
[タスク トリガー]画面では、シャットダウンを実行するタイミングを指定する。例えば平日のみシャットダウンするなら、[毎週]を選ぶ。
  (3)平日でも土日でも区別なくシャットダウンするなら[毎日]を選ぶ。
  (4)日によってシャットダウンしないことがあるなら[毎週]あるいは[毎月]を選ぶ。以下では[毎週]を選んだという前提で説明する。また曜日ごとにシャットダウン時刻が変わる場合の手順については、本稿の最後で説明する。
シャットダウンのタスクを作成する(その3) シャットダウンのタスクを作成する(その3)
[毎週]画面では、1週間のうちシャットダウンを実行する曜日と、シャットダウン時刻を指定する。
  (5)定時シャットダウンを始める年月日を指定する。
  (6)シャットダウンする時刻を指定する。
  (7)チェックを入れてオンにした曜日だけ、シャットダウンが実行される。平日を選ぶ場合は、このように月〜金までにチェックを入れてオンにする。
シャットダウンのタスクを作成する(その4) シャットダウンのタスクを作成する(その4)
[操作]画面では実行するタスクの種類を大枠で選択する。
  (8)[プログラムの開始]ラジオボタンを選ぶ。
シャットダウンのタスクを作成する(その5) シャットダウンのタスクを作成する(その5)
[プログラムの開始]画面では、シャットダウンのためのコマンドshutdown.exeのパスと、そのコマンドラインオプションを指定する。この後は、ウィザードの指示に従って進めれば、タスクの作成は完了する。
  (9)shutdown.exeのありか(デフォルトでは C:\Windows\System32\shutdown.exe )を指定する。
  (10)オプションとして「-s -t 60 -f -c "強制終了を伴うシャットダウン(計画停電)"」を指定する。「-s」はシャットダウン、「-t 60」は60秒後にシャットダウンを開始、「-f」はプロセスの強制終了、「-c "強制終了を伴うシャットダウン(計画停電)"」はこのシャットダウンをイベントログに記録する際のコメントを、それぞれ指定している。shutdown.exeのオプションの詳細については、TIPS「コマンドラインから電源オフや休止を実行する」を参照していただきたい。

 シャットダウンではなく再起動を実行したい場合は、(10)で「-s」オプションの代わりに「-r」オプションを指定する。

 また「-t 60」オプションによってシャットダウンを60秒間待っているのは、スリープ中または休止状態からタスク起動によって回復した場合、各種サービスやネットワーク接続などが安定してからシャットダウンする方がよいからだ(不安定なままシャットダウンするとイベントログにエラーが記録されることがある)。

 「-f」オプションは、何らかの理由で終了しないプロセスがある場合でもシャットダウンを強行するために指定している。例えば未保存のデータがある場合、「-f」オプションを指定しないと、アプリケーションが「保存するファイル名を入力してください」などの画面を表示したまま入力待ちでシャットダウンシーケンスが止まってしまう。

 シャットダウンできずに停電で電源がオフになると、プロセスの強制終了より多くのデータ喪失やシステム破壊が生じる可能性がある。そのため、「-f」オプションを外すのはお勧めできない。なお、「-t」オプションで有意なタイムアウト時間(1秒以上)を設定した場合、「-f」オプションを指定したのと同じくプロセスの強制終了が行われる。

 ウィザードを完了させると、以下のように新たなタスクが1つ作成されているはずだ。

シャットダウンのタスクを作成した後のタスクスケジューラの画面 シャットダウンのタスクを作成した後のタスクスケジューラの画面
タスク作成ウィザードによってタスクを作成すると、このようにタスクスケジューラに登録される。
  (1)これを選んで右クリックし、[最新の情報に更新]をクリックする。
  (2)作成したタスク。このペインにタスクのリストが表示される。その下には、選択したタスクのプロパティが表示される。プロパティを変更するには、各タスクをダブルクリックする。

       1|2 次のページへ

Copyright© 1999-2016 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

スポンサーからのお知らせ

- PR -

この記事に関連するホワイトペーパー

Focus

- PR -

編集部からのお知らせ

@IT編集部では、編集記者を募集しています。ご興味のある方は奮ってご応募ください。

RSSについて

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

メールマガジン登録

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