タスクスケジューラ

Windowsには「タスクスケジューラ」と呼ばれる機能が用意されている。コマンド、アプリケーション、COMハンドラなどを指定したタイミングで起動できる機能だ。電子メールの送信やメッセージの表示、繰り返し実行などの指定も可能となっている。

PowerShellでスクリプトを組むようになると、作成したスクリプトを何らかのタイミングで自動的に実行したいことがある。タスクスケジューラを使うとそういったことが行えるというわけだ。

ユーザーがタスクスケジューラについて意識することはないと思うが、実際にはWebブラウザなど複数のアプリケーションがタスクスケジューラの機能を使っている。つまり、意識はしていなくても多くのユーザーがこの機能を使っていることになる。PowerShellを活用していく上ではぜひ活用したい機能なので、今回はこの機能について取り上げる。

タスクを理解しておこう

タスクスケジューラには「タスク」と呼ばれるものを登録する。このタスクが何であるかを最初に把握しておくことが大切だ。タスクというのは複数の情報から構成されたもので、具体的には「トリガー」「アクション」「プリンシパル」「設定」「登録情報」「データ」で構成されている。タスクスケジューラは、タスクに詰め込まれた内容に従って処理を行っているだけなのだ。

このタスクについて基本的な概念と用語をまとめると次のようになる。

用語 説明
タスク      タスクスケジューラサービスが実行する対象。タスクは「トリガー」「アクション」「プリンシパル」「設定」「登録情報」「データ」で構成されている
トリガー タスクを実行するための一連の条件のこと。時間ベースのトリガーと、イベントベースのトリガーがある。タスクには最大で48個のトリガーを設定可能
アクション タスクによって実行される操作のこと。32個まで登録可能。複数のアクションが指定されている場合には順番に実行される。アクションにはCOMハンドラアクション、Execアクション、電子メールアクション、メッセージの表示アクションがある
プリンシパル タスクを実行するときのセキュリティコンテキストを設定
登録情報 タスクを識別する情報。作成者、登録日、説明、解説、セキュリティ、タスクソース、タスクURL、バージョンなどを登録できる
データ タスクの作成者が追加するドキュメント。XMLヘルプなど
設定 タスク同士の優先順位など、タスクの外部にある条件に対してタスクスケジューラがタスクを実行するために使用する設定

特に理解しておきたいのは「トリガー」と「アクション」だ。トリガーが時刻やイベントなど実行するタイミングを指定するもの、アクションはコマンド実行やメール送信などの実際に行われる操作のことだ。

トリガーには「時間ベーストリガー」と「イベントベーストリガー」の2種類がある。次のような感じだ。

用語 説明
時間ベーストリガー    時刻で開始を指定。特定の時刻、毎日、毎週、毎曜日、毎月の週単位スケジュールなどを指定できる
イベントベーストリガー システムイベントに応答するタスクを設定可能。システムの起動、ユーザーのサインイン時、システムがアイドル状態に入った時、など

1つのタスクに登録できるトリガーは1つではなく、最大48個だ。複数のトリガーを設定できることも覚えておこう。

アクションもコマンドやアプリケーションを実行するアクションだけではなく、COMハンドラの起動や電子メールの送信、メッセージボックスへの表示など4つの種類がある。次のような感じだ。

用語 説明
COMハンドラアクション COMハンドラを起動
Execアクション コマンドラインを実行
電子メールアクション 電子メールの送信を実行
メッセージの表示アクション  指定されたメッセージとタイトルをメッセージボックスに表示

1つのタスクに登録できるアクションも1つではない。最大で32個まで登録することができる。

このように、タスクがどういうものなのかを把握しておくと、どういったタイミングで何を自動的に行わせることができるのか、比較的自由に発想できるようになると思う。

タスクスケジューラを試してみよう

ではここで、タスクスケジューラを起動して、どのようにタスクを登録できるか確認してみよう。まず、スタートメニューに「タスクスケジューラ」と入力し、タスクスケジューラを起動する。

  • 起動されたアスクスケジューラ

    起動されたタスクスケジューラ

タスクスケジューラにはすでにいくつかのタスクが登録されているはずだ。

タスクスケジューラを使ったことがない場合には、メニューから「基本タスクの作成」を選択して、「基本タスクの作成ウィザード」を使ってタスクを作ってみよう。タスクの作成がどのようなものか把握するには、最初はこのウィザードで作業してみると良いと思う。

  • メニューから「基本タスクの作成」を選択し、「基本タスクの作成ウィザード」を起動

    メニューから「基本タスクの作成」を選択し、「基本タスクの作成ウィザード」を起動

後はウィザードの指示に沿って作成すればよい。例えば次のような感じだ。

  • トリガー:毎日

    トリガー:毎日

  • トリガー:毎日:時刻と間隔を設定

    トリガー:毎日:時刻と間隔を設定

  • 操作:プログラムの開始

    操作:プログラムの開始

  • 操作:プログラムの開始:プログラム/スクリプト

    操作:プログラムの開始:プログラム/スクリプト

  • 完了

    完了

作成したタスクが一覧に表示されていることを確認しよう。こうしてタスクを作成すると、タスクスケジューラサービスは作成されたタスクの内容に従ってスケジュール通りに処理を行う。

  • 追加されたタスクが一覧に追加されていることを確認

    追加されたタスクが一覧に追加されていることを確認

タスクを作成する感覚がつかめたら、次からは「新しいタスクの作成」でより詳細なタスクを作成していけばよい。

タスクとPowerShellスクリプト

PowerShellスクリプトの“旨味”は、これまで手動で処理していた内容を自動化できる点にある。タスクマネージャはこの自動化をさらに活用する上で重要になる機能だ。PowerShellスクリプトを使うようになってきたら、ぜひとも活用を検討していただきたい。

参考