タスクスケジューラ

Microsoft Windowsのタスクスケジューラは決められた時間または一定間隔でプログラムやスクリプトを実行する機能であり、Windows 95のPlus!パックで「システムエージェント」として初めて提供された。
Windows 98で名称が「タスクスケジューラ」と変更された。この機能を実行するには「イベントログサービス」が起動している必要がある。
バージョン.
Windows 95、98、Meのタスクスケジューラは「mstask.exe」で実行されるアプリケーションであった。Win95、98では通知領域（タスクトレイ）にステータス・アイコンとして表示され、Meでは表から見えない状態で実行される。
1.0.
タスクスケジューラ1.0はWindows 2000、Windows XP、Windows Server 2003に搭載された。
タスクスケジューラ用のタスク定義とスケジュールは拡張子が「.job」のバイナリファイルに保存され、Windowsサービスとして実行される。.jobファイルを直接操作することで、一対一のアクションが割り当てられる。タスクを作成するアプリケーション用にAPIが公開されており、ITaskScheduler COM インターフェイス経由で利用できる。
2.0.
タスクスケジューラ2.0はWindows Vista、Server 2008に搭載された。Microsoft 管理コンソールに基づいてユーザーインターフェイスのデザインが変更され、予定された時間、間隔でタスクを実行するだけでなく、カレンダーや特定のイベントなどに従ってタスクを実行できるようになった。たとえば特定のイベントがイベント・ログに書き込まれたときや複数のイベントがある組み合わせで発生したときなどにタスクを実行する。複数のタスクを用意する代わりにあらかじめ一連のアクションとして設定することができるようになり、一つのイベントで複数のタスクを同時に実行することも可能となった。また、システムが一定時間アイドル状態になったとき、ログオンまたはログオフ時の実行、定められた期間内に限定した開始や継続実行など、タスクの実行条件を細かく設定できるようになった。イベント・ログからイベントをフィルタリングするときにはXPathを使用できる。実行条件のイベントが起こってから少し時間を置いてタスクを実行するよう設定したり、他のあるイベントが起こるまでタスクを繰り返すこともできるようになった。タスクの実行に失敗した場合、別のアクションを定義することも可能。タスクスケジューラが実行できるアクションはメールを送ったり、メッセージボックスを表示したり、COMハンドラを発生させたり、アプリケーションだけでなく内蔵機能にまたがる様々なことが可能となっている。カスタム・アクションはタスクスケジューラAPIを利用して指定でき、すべてのタスクの実行履歴が保持される。
Vistaでは様々なシステムレベルのタスク実行にタスクスケジューラが使用されるため、タスクスケジューラのサービスは無効にできなくなっている。タスクスケジューラ2.0のタスクをプログラムで作成するためのAPIはITaskService COMインターフェイス経由で利用できる。Windows APIにはタスクスケジューラ用のマネージコードが含まれていない。タスクスケジューラAPIはVBScript、JScript、Windows PowerShellを含むスクリプト言語からも利用できる。タスクスケジューラ2.0のjobファイルはXMLベースとなっており、タスクスケジューラ・スキーマに準拠したテキストファイルであるため可読性がある。jobファイルをテキストファイルに直接記述して作成可能だが、MicrosoftはタスクスケジューラAPIの利用を推奨している。タスクスケジューラ用のコマンドライン・ユーティリティも「schtasks.exe」として用意されている。
タスク.
タスクスケジューラサービスはタスクを管理する。ここでのタスクは、定められた条件に基づいて実行されるアクションをいう。たとえば、アプリケーションの起動やその他のカスタムアクションの実行条件として時間やイベントを設定する。タスクにメタデータを付加し、タスク実行時のセキュリティレベルを指定することもできる。タスクは.jobファイルに順に格納され、「タスクフォルダ」という名の特別なフォルダでサブディレクトリに整理して置かれる。プログラムからタスクフォルダへのアクセスには、codice_1インターフェイスまたはcodice_2スクリプトオブジェクトを使用し、タスク自体へのアクセスにはcodice_3インターフェイスまたはcodice_4オブジェクトを使用する。
バグ.
sysprepを使ってディスクイメージを複製したWindows 2000およびWindows XPコンピュータ上では、システム特権によるタスクは動作しない。sysprepはセキュリティ識別子（SID）の複製を防ぐためにシステムのセキュリティ・コードを再生成するが、新しいセキュリティ・コードを使用するようにスケジュール済みのタスクをアップデートしない。結果として、システム特権によるスケジュール済みタスクはイメージ複製により構成されたコンピュータ上では動作しない。この問題には解決策がないため、スケジュールに従って夜間にシステムを強制シャットダウンするようなタスクをあらかじめ作成してイメージ複製したコンピュータを管理する用途には役立たない。