連載
» 2017年11月27日 05時00分 公開

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

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

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

連載目次

対象: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コマンドを組み合わせると、それほど手間なく実現できる(タスクスケジューラについては、Tech TIPS「タスクスケジューラの基本的な使い方」参照のこと)。

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

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

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

 このユーザー権利は、ログオフ(サインアウト)状態でもシャットダウンのタスクを実行するために必要なものだ(Tech TIPS「ログオフ中でもタスクを起動させる方法」参照のこと)。以下では管理者アカウントを使うという前提で説明する。

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

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

タスクスケジューラを実行する タスクスケジューラを実行する

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

 なお、ウィザード中に指定するshutdownコマンドのオプションは、「-s -t 60 -f -c "強制終了を伴うシャットダウン(計画停電)"」を指定しておくとよい。オプションの意味は下表の通りである。

オプション 意味
-s シャットダウン
-t 60 60秒後にシャットダウンを開始
-f プロセスの強制終了
-c "強制終了を伴うシャットダウン(計画停電)" このシャットダウンをイベントログに記録する際のコメント
設定するshutdownコマンドのオプションとその意味

 shutdown.exeのオプションの詳細については、TIPS「コマンドラインから電源オフや休止を実行する」を参照していただきたい。

タスク作成のウィザードを起動する タスク作成のウィザードを起動する
シャットダウンのタスクを作成する(その1) シャットダウンのタスクを作成する(その1)
管理ツールの[タスク スケジューラ]を起動し、右側の操作ペインで[基本タスクの作成]をクリックすると、このウィザードの最初の画面が表示される。「名前」には、これから作るタスクの名前を記入する。いったんタスクを作成すると後から変更できないので注意すること。また、「説明」にはタスクの説明を記入する。
シャットダウンのタスクを作成する(その2) シャットダウンのタスクを作成する(その2)
[タスク トリガー]画面では、シャットダウンを実行するタイミングを指定する。例えば平日のみシャットダウンするなら、[毎週]を選ぶ。以下では[毎週]を選んだという前提で説明する。また曜日ごとにシャットダウン時刻が変わる場合の手順については、本稿の最後で説明する。
シャットダウンのタスクを作成する(その3) シャットダウンのタスクを作成する(その3)
[毎週]画面では、1週間のうちシャットダウンを実行する曜日と、シャットダウン時刻を指定する。
シャットダウンのタスクを作成する(その4) シャットダウンのタスクを作成する(その4)
[操作]画面では実行するタスクの種類を大枠で選択する。
シャットダウンのタスクを作成する(その5) シャットダウンのタスクを作成する(その5)
[プログラムの開始]画面では、シャットダウンのためのコマンドshutdown.exeのパスと、そのコマンドラインオプションを指定する。
シャットダウンのタスクを作成する(その6) シャットダウンのタスクを作成する(その6)
作成したタスクの内容を確認し、問題ないようなら[完了]ボタンをクリックし、保存する。

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

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

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

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

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

シャットダウンのタスクを作成した後のタスクスケジューラの画面 シャットダウンのタスクを作成した後のタスクスケジューラの画面
タスク作成ウィザードによってタスクを作成すると、このようにタスクスケジューラに登録される。

       1|2 次のページへ

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

@IT Special

- PR -

RSSについて

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

メールマガジン登録

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