Windowsのタスクスケジューラでシステム起動時にタスクを実行する:Tech TIPS
タスク・スケジューラは一般的には、定期的にタスクを実行するために利用する。しかしシステムの起動時や、ユーザーのログオン時といったタイミングでもタスクを実行できる。システム起動時に実行させる場合は、ローカル・アカウントで実行するように設定する。
対象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の場合は、[コンピュータの管理]−[システム ツール]−[タスク スケジューラ]で[操作]メニューから[基本タスクの作成]を選ぶ。
タスクを定義するためのタスク・ウィザードが起動したら、タスクの名前(実行するファイル名)と実行タイミングの定義画面では、「コンピュータ起動時」もしくは「ログオン時」を選択する。
タスクを実行するタイミングの指定
定期的なタスクの実行のほか、起動時やログオン時といったタイミングも指定できる。
(1)実行するタスクのコマンド名(これは、実行するコマンドのファイル名に基づいて自動的に設定されるが、手動で変更できる)。
(2)システムが起動したときに、1回だけ実行させるには、これを選択する。Windows VistaやWindows Server 2008の場合は[コンピュータの起動時]となっている。
(3)ログオンした後にすぐに実行する場合はこれを選択する。[スタート]メニューの[スタートアップ]に登録したのとほぼ同じ意味を持つ。
この例では「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コマンドを実行させ、その結果から判断するとよいだろう。
タスク・ウィザードの次の画面ではタスクを実行するためのアカウントを指定するが、「コンピュータ起動時」というタイミングを利用する場合は、このアカウントは必ずローカル・コンピュータ上のローカル・アカウントを指定すること。システム起動時にはユーザー環境にはまだログオンしていないし、タイミングによってはネットワークがまだアクティブになっていない可能性もある。つまりほかのコンピュータやドメイン・コントローラと通信できないかもしれない。ローカルのアカウントでないと、タスク実行が失敗する可能性が高い。
タスクの実行アカウントの指定
ウィザードの次の画面では、タスクを実行するためのアカウントとパスワードの指定を行う。「コンピュータ起動時」というタイミングで実行させる場合は、ここではローカルのユーザー・アカウントを指定する。
(1)アカウントの指定。「ローカル・コンピュータ名\アカウント名」として、ローカルのコンピュータ上のアカウントを指定すること。
(2)アカウントに対するパスワード。
ウィザードでの作業は以上で終了である。次はタスクが実際に動作するかを確認する。定義されたタスクを右クリックして、ポップアップ・メニューから[タスクの実行]を選択してみる。タスクが実行され、(ログを残すようにしていれば)ログ・ファイルの内容を確認してみよう(先の例なら、「c:\Windows\systembootcommandlog.txt」というファイルの内容を確認する)。また[タスク]の[詳細設定]メニューから[ログの表示]を選ぶことにより、タスク・スケジューラ自体のログも確認できる。このログの見方についてはTIPS「タスク・ログ・ファイルの見方」を参照していただきたい。
■この記事と関連性の高い別の記事
- タスクスケジューラの基本的な使い方(Windows 7/8.x/10編)(TIPS)
- ログオフ中でもタスクを起動させる方法(TIPS)
- タスクの設定を保存/コピーする(Windows XP/Windows Server 2003編)(TIPS)
- タスク・スケジューラとWSHで定例処理を実現する(TIPS)
- Windowsのタスクスケジューラーで数分おきにプログラムを繰り返し実行する(TIPS)
- タスク・スケジューラをコマンド・プロンプトから制御する(TIPS)
- タスク・ログ・ファイルの見方(TIPS)
- イベント・ログをトリガーにしてメールを送信する(基本編)(TIPS)
- Windows Server 2003のタスクをWindows Server 2012 R2に移行する(TIPS)
- コンピューターを設定時刻に自動でシャットダウンする(TIPS)
Copyright© Digital Advantage Corp. All Rights Reserved.