タスク・スケジューラは一般的には、定期的にタスクを実行するために利用する。しかしシステムの起動時や、ユーザーのログオン時といったタイミングでもタスクを実行できる。システム起動時に実行させる場合は、ローカル・アカウントで実行するように設定する。
対象OS:Windows 2000 / Windows XP / Windows Vista / Windows Server 2003 / Windows Server 2008
タスク・スケジューラ(コントロール・パネルの[タスク])を利用すると、定期的な作業(コマンド・プロンプト上で実行するような、CUIベースの作業)を自動的に行わせることができる。TIPS「タスク・スケジューラとWSHで定例処理を実現する」では、タスク・スケジューラへのタスクの登録方法を紹介している。
一般的にタスクでは、毎日とか毎週、毎月など、定期的に実行するタスクを登録することが多いが、これ以外にもタスク・スケジューラでは、「システムの起動時」や「ユーザーのログオン時」などのタイミングでもコマンドを実行させることができる。本TIPSではその方法について紹介する。この機能を利用すると、例えばシステム起動時にTMPフォルダの内容を消去するとかログ・ファイルをローテートさせる(ログ・ファイルの名前を変更して、古いログを順番に消去する)、外部と時刻を強制的に同期させる、システム起動のログを記録させる(OS標準のイベント・ログ機能ではなく、独自のログ・システムを利用する場合に有用)、などといったことが可能になる。
なお、Windows VistaやWindows Server 2008以降ではタスク・スケジューラの機能がさらに拡張され、あるイベント・ログが記録されたらメールを送信する、といったことも可能になっている。これについてはTIPS「イベント・ログをトリガーにしてメールを送信する(基本編)」を参照していただきたい。
タスク・スケジューラでシステムへのログオン時にコマンドを実行させるには、[コントロール パネル]の[タスク]で[スケジュールされたタスクの追加]というリンクをクリックして、新しいタスクを定義する。Windows VistaやWindows Server 2008の場合は、[コンピュータの管理]−[システム ツール]−[タスク スケジューラ]で[操作]メニューから[基本タスクの作成]を選ぶ。
タスクを定義するためのタスク・ウィザードが起動したら、タスクの名前(実行するファイル名)と実行タイミングの定義画面では、「コンピュータ起動時」もしくは「ログオン時」を選択する。
この例では「mysystemboot.cmd」というバッチ・コマンドを登録している。内容は自由だが、例えばTEMPフォルダをクリアするなら、次のようなコマンドでよいだろう。
echo *** System Boot Command Log [ %date%, %time% ] ** >> c:\Windows\systembootcommandlog.txt
del c:\temp\*.* /s /f /q
先頭のechoコマンドは、ログ・ファイル(テキスト・ファイル)に、実行した記録を残すためのものである。なお、ここでは「%date%」と「%time%」で実行時間を記録しているが、「コンピュータ起動時」に実行させる場合は、通常よりも利用できる環境変数が少ないことに注意していただきたい(ログオンする前なので、ユーザー名などの環境変数は利用できない)。どのような変数が利用できるかは、例えば「set >> c:\Windows\systembootcommandlog.txt」のようにしてsetコマンドを実行させ、その結果から判断するとよいだろう。
タスク・ウィザードの次の画面ではタスクを実行するためのアカウントを指定するが、「コンピュータ起動時」というタイミングを利用する場合は、このアカウントは必ずローカル・コンピュータ上のローカル・アカウントを指定すること。システム起動時にはユーザー環境にはまだログオンしていないし、タイミングによってはネットワークがまだアクティブになっていない可能性もある。つまりほかのコンピュータやドメイン・コントローラと通信できないかもしれない。ローカルのアカウントでないと、タスク実行が失敗する可能性が高い。
ウィザードでの作業は以上で終了である。次はタスクが実際に動作するかを確認する。定義されたタスクを右クリックして、ポップアップ・メニューから[タスクの実行]を選択してみる。タスクが実行され、(ログを残すようにしていれば)ログ・ファイルの内容を確認してみよう(先の例なら、「c:\Windows\systembootcommandlog.txt」というファイルの内容を確認する)。また[タスク]の[詳細設定]メニューから[ログの表示]を選ぶことにより、タスク・スケジューラ自体のログも確認できる。このログの見方についてはTIPS「タスク・ログ・ファイルの見方」を参照していただきたい。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.