Microsoft Windowsのタスクスケジューラは、指定された時間や一定の間隔でプログラムやスクリプトを自動実行する機能です。この機能は、Windows 95のPlus!パックで「システムエージェント」として初めて導入され、その後、Windows 98で「タスクスケジューラ」という名称に変更されました。タスクスケジューラが正常に動作するためには、「イベントログサービス」が起動している必要があります。
バージョン
初期のWindows 95、98、Meにおけるタスクスケジューラは「mstask.exe」というアプリケーションとして実行されていました。Windows 95と98では、通知領域(タスクトレイ)にステータスアイコンが表示されていましたが、Meではバックグラウンドで実行されるようになりました。
1.0
タスクスケジューラ1.0は、Windows 2000、Windows XP、Windows Server 2003に搭載されました。このバージョンでは、タスクの定義とスケジュールは
拡張子が「.job」のバイナリファイルに保存され、Windowsサービスとして実行されます。各.jobファイルには、特定のアクションが1対1で割り当てられています。アプリケーション開発者は、ITaskScheduler COMインターフェイスを通じてタスクを作成するためのAPIを利用できます。
2.0
タスクスケジューラ2.0は、Windows VistaおよびServer 2008で導入されました。ユーザーインターフェースはMicrosoft 管理コンソール(MMC)に基づいて再設計され、従来のスケジュールされた時間や間隔によるタスク実行に加え、カレンダーイベントや特定のシステムイベントに応じたタスク実行が可能になりました。例えば、特定のイベントがイベントログに記録された場合や、複数のイベントが特定の組み合わせで発生した場合にタスクを実行できます。また、複数のタスクを個別に設定する代わりに、一連のアクションを定義して、一つのイベントで複数のタスクを同時に実行することも可能になりました。
タスクの実行条件も大幅に拡張され、システムが一定時間
アイドル状態になったとき、ユーザーのログオン/ログオフ時、あるいは特定の期間内でのみ実行するなど、細かい設定が可能になりました。イベントログからのイベントフィルタリングにはXPathが使用でき、イベント発生後の遅延実行や、別のイベントが発生するまでの繰り返し実行も設定できます。タスク実行が失敗した場合のアクションも設定でき、メール送信、メッセージボックス表示、COMハンドラの起動など、多様なアクションが利用できます。カスタムアクションは、タスクスケジューラAPIを利用して定義できます。また、すべてのタスク実行履歴が保存されるようになりました。
Windows Vistaでは、システムレベルの多くのタスク実行にタスクスケジューラが使用されているため、サービスの無効化はできません。タスクスケジューラ2.0のタスクをプログラムから作成するためのAPIは、ITaskService COMインターフェイスを通じて利用できます。Windows APIにはタスクスケジューラ用のマネージコードは含まれていませんが、
VBScript、
JScript、Windows PowerShellなどの
スクリプト言語からAPIを利用できます。
タスクスケジューラ2.0のjobファイルはXMLベースで、タスクスケジューラ・スキーマに準拠したテキストファイルであるため、可読性が向上しました。jobファイルを直接テキストエディタで作成することも可能ですが、MicrosoftはタスクスケジューラAPIの利用を推奨しています。タスクスケジューラ用のコマンドラインユーティリティ「schtasks.exe」も提供されています。
タスク
タスクスケジューラサービスは、タスクを管理する役割を担います。タスクとは、特定の条件に基づいて実行されるアクションのことで、アプリケーションの起動やカスタムアクションの実行などが含まれます。タスクにはメタデータが付与でき、実行時のセキュリティレベルを指定することも可能です。タスクは「.job」ファイルに格納され、「タスクフォルダ」という特殊なフォルダ内のサブディレクトリに整理されています。プログラムからタスクフォルダへのアクセスにはITaskFolderインターフェイスまたはTaskFolderスクリプトオブジェクト、タスク自体へのアクセスにはIRegisteredTaskインターフェイスまたはRegisteredTaskオブジェクトを使用します。
バグ
sysprepを使用してディスクイメージを複製したWindows 2000およびWindows XPコンピュータでは、システム特権で実行されるタスクが正常に動作しない場合があります。sysprepは、SID(セキュリティ識別子)の複製を防ぐためにシステムのセキュリティコードを再生成しますが、スケジュールされたタスクが新しいセキュリティコードを使用するように更新されないためです。この問題に対する根本的な解決策はなく、スケジュールに従ってシステムを強制的にシャットダウンするようなタスクは、複製されたイメージから展開されたコンピュータでは正常に機能しません。
脚注
関連項目
ジョブ管理システム
crontab
外部リンク
Task Scheduler
Cannot Disable Task Scheduler
*
VisualCron - alternative Task Scheduler for Windows