連載
» 2011年03月18日 00時00分 UPDATE

Windows TIPS:コンピュータを設定時刻に自動でシャットダウンする

計画停電の際には、決まった時刻にPCを自動でシャットダウンできると便利だ。Windows標準のタスク・スケジューラとshutdownコマンドで実現する方法とは?

[島田広道,デジタルアドバンテージ]
Windows TIPS
Windows Server Insider


「Windows TIPS」のインデックス

連載目次

対象OS:Windows 7/Windows Server 2008 R2


解説

 ある決まった時刻になったらコンピュータをシャットダウンしたい場合がある。例えば電気の保守点検にともなう停電や計画停電では、事前に通知された停電開始時刻の前に、コンピュータを自動的にシャットダウンできると便利だ(もちろん、シャットダウンに失敗しないように注意する必要はあるが)。また、業務完了後にうっかりシャットダウンし忘れたPCを決まった時間にシャットダウンしたい場合もあるだろう。シャットダウンとは異なるが、サーバの場合はアプリケーションのメモリ・リークといった不具合がひどくなる前に、一定間隔で再起動したい場合もある。

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

操作方法

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

 また本稿ではWindows 7でタスクを作成する例を説明するが、Windows Server 2008 R2でも操作方法は同じだ。Windows XP/Windows Server 2003の場合、画面や操作手順が異なるが、個々の設定項目には共通の部分もあるので参考にしていただきたい。

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

 まず、シャットダウンのタスクを実行するユーザー・アカウントを決める。それには専用のローカル・アカウントを作成し、ローカルのAdministratorsグループに加えて利用するとよい。

 次に、そのアカウントでタスクを起動できるかどうか、ポリシー設定を確認する。それにはまずコントロール・パネルから[システムとセキュリティ]−[管理ツール]をクリックし、[ローカル セキュリティ ポリシー]をダブルクリックする。ローカル・セキュリティ・ポリシーの画面が表示されたら、左ペインのツリーで[セキュリティの設定]−[ローカル ポリシー]−[ユーザー権利の割り当て]を選び、右ペインで[バッチ ジョブとしてログオン]という項目に注目する。[セキュリティの設定]列に、さきほど作成したアカウントが所属するグループ(本稿ではローカルAdministratorsグループ)が含まれていなければ、[バッチ ジョブとしてログオン]をダブルクリックしてプロパティを開き、当該アカウントを追加しておく(可能であれば、専用のローカル・グループを作成して当該アカウントを加え、それに[バッチ ジョブとしてログオン]の権利を与えた方が管理しやすい)。

wi-scr01.gif [バッチ ジョブとしてログオン]の権利の割り当てを確認する
  (1)これを選ぶ。
  (2)これがタスク実行アカウントに必要な権利。
  (3)この権利を与えられているユーザーやグループの一覧。もし当該アカウントが所属するグループが、ここに含まれていない場合は、ここをダブルクリックして[バッチ ジョブとしてログオン]のプロパティを開き、当該アカウントを追加しておく。

 グループ・ポリシーで[バッチ ジョブとしてログオン]の権利が設定されていると、ローカル・セキュリティ・ポリシーの画面ではアカウントを追加できない。その場合はグループ・ポリシーの方でアカウントを追加しておく(ただし、タスク実行用アカウントはドメイン・アカウントにする必要がある)。

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

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

 次にタスク作成のウィザードを起動する。タスク・スケジューラの左ペインのツリーにある[タスク スケジューラ (ローカル)]を選択してから、右側の操作ペインで[基本タスクの作成]をクリックする。ウィザードの最初の画面では、これから作るタスクの名前と名称を次の例のように指定する:

  • 名前: 「定時強制シャットダウン(午後2時50分)」
  • 説明: 「午後3時から計画停電のため、平日の午後2時50分にプロセスを強制終了してシャットダウンする。」

 ウィザードを次に進めると「タスク トリガー]の画面が表示される。平日でも土日でもシャットダウンの時刻が変わらないなら[毎日]、日によってシャットダウンしないことがあるなら[毎週]あるいは[毎月]を選ぶ。本稿では平日のみシャットダウンする例を説明する。曜日ごとにシャットダウン時刻が変わる場合、ウィザードでは設定できない。とりあえず代表的な曜日のみ設定してウィザードを完了させ、あとでほかの曜日の時刻を追加する必要がある(その手順は後で説明する)。

wi-scr02.gif 基本タスク作成ウィザードの[タスク トリガー]画面
シャットダウンを実行するタイミングを指定する。例えば平日のみシャットダウンするなら、[毎週]を選ぶ。
  (1)これを選ぶ。

 ウィザードを次に進めると、[毎週]の画面が表示されるので、シャットダウンの時刻と曜日を指定する。

wi-scr03.gif 基本タスク作成ウィザードの[毎週]画面
1週間のうち、シャットダウンを実行する曜日と、シャットダウン時刻を指定する。
  (1)定時シャットダウンを始める年月日を指定する。
  (2)シャットダウンする時刻を指定する。
  (3)チェックを入れてオンにした曜日だけ、シャットダウンが実行される。平日を選ぶ場合は、このように月〜金までにチェックを入れてオンにする。

 ウィザードを次に進めると、[操作]の画面が表示されるので、[プログラムの開始]ラジオ・ボタンを選んで次に進む。

 [プログラムの開始]の画面が表示されたら、shutdownコマンドのパスおよびコマンドライン・オプションを指定する。shutdown.exeのオプションの詳細については、TIPS「コマンドラインから電源オフや休止を実行する」を参照していただきたい。

wi-scr04.gif 基本タスク作成ウィザードの[プログラムの開始]画面
シャットダウンのためのコマンドshutdown.exeのパスと、そのコマンドライン・オプションを指定する。
  (1)shutdown.exeのありか(デフォルトでは C:\Windows\System32\shutdown.exe )をフルパスで指定する。
  (2)「-s」はシャットダウン、「-t 60」は60秒後にシャットダウンを開始、「-f」はプロセスの強制終了、「-c "強制終了をともなうシャットダウン(計画停電)"」はこのシャットダウンをイベント・ログに記録する際のコメントを、それぞれ指定している。

 シャットダウンではなく再起動を実行したい場合は、(2)にて「-s」の代わりに「-r」を指定する。「-t 60」によってシャットダウンを60秒間待っているのは、スリープ中または休止状態からタスク起動によって回復した場合、各種サービスやネットワーク接続などが安定してからシャットダウンする方がよいからだ(不安定なままシャットダウンするとイベント・ログにエラーが記録されることがある)。また、「-f」を指定しないとプロセスの強制終了によるデータ喪失は防止できる一方で、何らかの理由で終了しないプロセスがあるとシャットダウンが完了しない(未保存のデータがある場合に、アプリケーションが「保存するファイル名を入力してください」などの画面を表示したまま、入力待ちで止まってしまう)。計画停電などの場合、シャットダウンできずに停電で電源がオフになり、より多くのデータ喪失やシステム破壊が生じる可能性があるので、「-f」オプションを外すのはお勧めできない。

 ウィザードを次に進めると[概要]画面が表示されるので、[完了]ボタンをクリックする。これでタスクの作成は完了だ(ただし、すぐ後で説明するように設定変更が必要)。

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

●シャットダウン・タスクの設定変更

 シャットダウン・タスクの場合、ウィザードでは設定できない項目をタスクのプロパティで変更していく必要がある。そこで、タスク・スケジューラに登録したシャットダウン・タスク(上の画面の(2))をダブルクリックして、そのプロパティを開く。

 まずプロパティの[全般]タブで、[ユーザーがログオンしているかどうかにかかわらず実行する]ラジオ・ボタンを選択する。デフォルトでは、スケジュールした時刻に、タスクを作成したユーザー・アカウントでログオンしておかないと、タスクが実行されないので注意が必要だ。

wi-scr05.gif タスクのプロパティの[全般]タブ
タスクを実行するユーザー・アカウントに関する設定を変更できる。
  (1)これを選ぶ。
  (2)これをクリックすると、シャットダウンを実行するユーザー・アカウントを変更できる。ただし、そのアカウントのパスワードを入力する必要がある。

 次に[条件]タブで、電源に関する設定を次のように変更する。

wi-scr06.gif タスクのプロパティの[条件]タブ
タスクを実行するかどうかを決定する条件を指定できる。
  (1)デフォルトでこのチェック・ボックスはオンのため、バッテリ駆動中のノートPCではタスクが実行されず、シャットダウンされない。計画停電のようにネットワーク全体を停止する場合は、このチェックを外してオフにし、バッテリ駆動中であってもシャットダウンするように設定する。
  (2)これにチェックを入れてオンにする。これによりスリープ中あるいは休止状態のPCも、自動的に復帰した後にシャットダウンされる。

 [設定]タブは、デフォルトのまま変更する必要はないが、次のチェック・ボックスがオフになっていることだけは確認しておく:

  • [スケジュールされた時刻にタスクを開始できなかった場合、すぐにタスクを実行する]
  • [タスクが失敗した場合の再起動の間隔]

 これらのいずれかがオンだと、このタスク実行に失敗したとき、あとでPCを起動した直後にタスクが起動してシャットダウンが始まってしまう可能性がある。

 あとは[OK]ボタンをクリックし、タスク実行アカウントのパスワード入力を求めるダイアログが表示されたらパスワードを入力する。これでタスクの設定は完了だ。

 可能であれば、事前に手動でタスクを実行して正しくシャットダウンされることを確認しておく。それにはタスク・スケジューラの画面で左ペインのツリーで[タスク スケジューラ ライブラリ]を選び、真ん中のペインでシャットダウンのタスクを右クリックし、メニューから[実行]を選ぶ。すぐにタスクが起動してシャットダウンが始まるはずだ。

●曜日ごとにシャットダウン時刻が異なる場合の設定手順

 シャットダウンの時刻が曜日ごとに異なる場合は、ウィザードでタスクを終了した後に、そのプロパティの[トリガー]タブで各曜日の時刻を追加設定する必要がある。それには、[トリガー]タブを選んでから[新規]ボタンをクリックし、「新しいトリガー」ダイアログで、曜日とシャットダウン時刻を指定する。これを時刻の異なる曜日の数だけ繰り返す。以下では金曜日のみ午後6:10からシャットダウンする設定を追加している。

wi-scr07.gif [新しいトリガー]ダイアログ
[トリガー]タブを選んでから[新規]ボタンをクリックすると、このダイアログが表示される。トリガーを追加すると、単一のタスクのまま、例えば曜日ごとに異なる時刻で起動するといった複雑な設定ができる。
  (1)最初にこれを選ぶ。
  (2)このトリガーでシャットダウンしたい時刻を指定する。
  (3)このトリガーでシャットダウンしたい曜日のみチェックを入れてオンにする。

 あとは[OK]ボタンをクリックしていき、タスク実行アカウントのパスワード入力を求めるダイアログが表示されたらパスワードを入力して、プロパティを閉じると設定は完了である。

 シャットダウンとは逆に、決まった時刻にコンピュータを自動的に起動する方法については、TIPS「コンピュータの電源を設定時刻に自動的にオンにする」を参照していただきたい。

「Windows TIPS」のインデックス

Windows TIPS

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

TechTargetジャパン

Nexus 6と格安SIM、プレゼント!
Loading

ホワイトペーパー(TechTargetジャパン)

注目のテーマ

転職/派遣情報を探す

【転職サーチ】SIer/Web企業/新規事業 スマホ開発で、あなたのキャリアを生かす

「派遣・フリーで働くメリット」とは? 活躍する派遣エンジニアの本音

RSSについて

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

メールマガジン登録

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