
Windows環境には、作業を決められたスケジュールで自動的に実行させる機能として「タスクスケジューラ」が搭載されています。
タスクスケジューラには、OSやアプリケーションに関連するさまざまなタスクが登録されていますが、ユーザー自身がタスクを作成して、さまざまな処理を指定したタイミングで実行させることもできます。
そこでここでは、Windows 10を例に「タスクスケジューラ」の基本的な使い方を解説します。
目次
タスクスケジューラを起動する
タスクスケジューラを起動する方法はいくつかあるので、自分が使いやすいと感じる方法で起動すればOKです。
プログラム一覧から
スタートメニューのプログラム一覧で「Windows管理ツール」の「タスクスケジューラ」から起動できます。

検索ボックスから
検索ボックスに「タスク」と入力して、検索結果から「タスクスケジューラ」を選択して起動できます。

「ファイル指定して実行」から
「ファイルを指定して実行」で「taskschd.msc」と入力し「OK」をクリックリックすることで「タスクスケジューラ」を起動できます。

タスクを作成する
タスクスケジューラでタスクを作成する手順は、次のとおりです。
まず、画面右側のメニューから「基本タスクの作成」または「タスクの作成」をクリックします。
「基本タスクの作成」では、ウィザード形式で簡単にタスクを作成でき、「タスクの作成」では、詳細な設定を自分で指定してタスクを作成できますが、慣れないうちは「基本タスクの作成」でタスクを作成して、そのあと必要に応じて設定を変更すると良いでしょう。

以降では「基本タスクの作成」で、タスクを作成する手順を紹介します。
基本タスクの作成
「基本タスクの作成」画面が表示されたら、まずタスクの名前を指定し「次へ」をクリックします。
タスクの名前は自分が管理しやすい任意の名前でOKです。

タスクトリガー
次の「タスクトリガー」画面では、タスクを実行するタイミングを指定し「次へ」をクリックします。
実行タイミングは「毎日」「毎週」「毎月」「一回限り」「コンピューターの起動時」「ログオン時」「特定イベントのログへの記録時」が選択でき、選択した項目によって、次の画面で指定する内容が変わります。
ここでは例として「毎日」を選択します。

次の「毎日」画面では、タスクを起動する開始日時と間隔を指定し「次へ」をクリックします。
なお「間隔」に「1」を指定すると毎日実行され、「2」を指定すると1日おきに実行されます。

ちなみに、前の画面で「毎日」以外を選択したときのそれぞれの画面は、以下のとおりです。

「毎週」を選択したとき

「毎月」を選択したとき

「1回限り」を選択したとき

「特定イベントのログへの記録時」を選択したとき
操作
次の「操作」画面では「プログラムの開始」を選択し「次へ」をクリックします。
その他の選択肢は、画面に表示されているとおり「非推奨」なので、もしメールを送りたいときや、メッセージを表示させたいときは、ここで選択するのではなく、別途スクリプトファイルを用意して対応します。

次の「プログラムの開始」画面では、実行するプログラムを指定し「次へ」をクリックします。
プログラムに何らかの引数を指定するときは「引数の追加(オプション)」欄に入力し、プログラムを実行するときのカレントディレクトリを指定するときは「開始(オプション)」欄に、フルパスで入力します。

要約
最後の「要約」画面で、タスクの設定内容を確認し「完了]をクリックします。

以上で、タスクの作成完了です。
作成したタスクは、タスクスケジューラライブラリの一覧に追加されており、一覧では現在の状態や、トリガー、次回の実行日時、前回の実行結果などを確認できます。

また、作成したタスクを即時で実行したいときは、画面右側のメニューから「実行」をクリックすることで、スケジュールに関係なく即時で実行でき、タスクを実行させたくないときは「無効化」をクリックすることで、選択したタスクを一時的に無効化することもできます。

タスク作成時の留意事項
「基本タスクの作成」で作成したタスクは、タスクを作成したユーザーがWindowsにサインインしているときに、タスクを作成したユーザーの権限で実行されます。
「基本タスクの作成」で作成したタスクをサインアウト中でも実行させたいときや、別のユーザーでタスクを実行させたい、管理者権限で実行させたいときなどは、タスクの設定を変更する必要があります。
ps1ファイルを実行させるときは
PowerShellスクリプトファイル(拡張子がps1のファイル)をタスクスケジューラで実行させたいときは、タスクの設定画面の「プログラム/スクリプト」欄には「powershell.exe」と入力し「引数の追加」欄に実行させたいps1ファイルをフルパスで入力します。

コマンドでタスクを作成する
Windowsコマンドで作成する
Windowsコマンドでタスクスケジューラを管理するときはschtasksコマンドを利用します。
タスクを作成するときは、コマンドプロンプトを起動してschtasksコマンドに「/create」オプションを使って行い、基本的な書式は次のとおりです。
管理者権限が必要な設定やプログラムを実行する場合は、管理者権限でコマンドプロンプトを起動してタスクを作成する必要があります。
> schtasks /create /tn <タスク名> /tr <実行するプログラム> <実行タイミング>「タスク名」には、任意の管理しやすい名前を設定し、「実行するプログラム」には、タスクで実行したいプログラムやコマンドをフルパスで指定し、「実行タイミング」ではタスクを実行する日時や繰り返し間隔などを設定します。
たとえば「毎週金曜日の午後5時にシステム情報をファイルに保存する」というタスクを作成する場合は、以下のようにコマンドを実行します。
> schtasks /create /tn "TestReport" /tr "msinfo32.exe /report E:\msinfo.txt" /sc weekly /d fri /st 17:00なお「実行タイミング」では、以下のようなオプションを使って実行タイミングを定義できます。
| 指定方法 | 説明 |
|---|---|
| /sc once /st 21:30 | 21時30分に一度だけ実行 |
| /sc once /sd 2022/9/14 /st 21:00 | 2019年12月31日の23時55 分に一度だけ実行 |
| /sc onstart | システム起動時に実行 |
| /sc onstart /delay 5:00 | システム起動の5分後に実行 |
| /sc onlogon | ユーザのログオン時に実行 |
| /sc onidle /i 10 | 10分以上アイドル状態のときに実行 |
| /sc minute /mo 15 | 15分ごとに実行 |
| /sc hourly /mo 5 | 5時間ごとに実行 |
| /sc daily /mo 3 /st 00:00 | 3日ごとに午前0時に実行 |
| /sc weekly /mo 3 | 3週ごとに実行 |
| /sc weekly /d mon,wed | 毎週月曜日と水曜日に実行 |
| /sc monthly /mo lastday | 毎月月末に実行 |
| /sc monthly /d 1 /m * | 毎月1日に実行 |
また、タスクを作成する際は、最上位特権で実行させたり(/rl highest)、タスクを実行後に自動的に削除する(/z)、タスクの実行ユーザーを指定する(/ru)といったオプションも用意されています。
なお、schtasksコマンドでは上に紹介したタスクを作成する以外にも、さまざまなオプションを使ってタスクを削除したり、タスクの検索、タスクの即時実行といった管理ができます。
schtasksコマンドの詳しい使い方を知りたいときは、コマンドのヘルプ「schtasks /?」が役立つでしょう。
PowerShellコマンドレットで作成する
PowerShellコマンドレットでタスクを作成するときは、PowerShellを起動してRegister-ScheduledTaskコマンドレットを使って行い、基本的な書式は次のとおりです。
管理者権限が必要な設定やプログラムを実行する場合は、管理者権限でPowerShellを起動してタスクを作成する必要があります。
PS> Register-ScheduledTask -TaskName <タスクの名前> -Action <実行するプログラム> -Trigger <実行タイミング>「-Action」オプションで指定する実行プログラムは、New-ScheduledTaskActionコマンドレットで定義し、「-Trigger」オプションで指定するタスクの実行タイミングは、New-ScheduledTaskTriggerコマンドレットで定義します。
たとえば「毎週金曜日の午後5時にシステム情報をファイルに格納する」というタスクを作成したい場合、以下のように実行します。
PS> $task=New-ScheduledTaskAction -Execute "msinfo32.exe" -Argument "/report E:\msinfo.txt"
PS> $trigger=New-ScheduledTaskTrigger -Weekly -DaysOfWeek Friday -At 5pm
PS> Register-ScheduledTask -TaskName "TestReport" -Trigger $trigger -Action $taskRegister-ScheduledTaskコマンドレットでは、最上位特権で実行させたり(-RunLevel highest)、タスクの実行ユーザーを指定する(-User)といったオプションも用意されています。
New-ScheduledTaskActionコマンドレットでは、実行するプログラムに加えて、実行するプログラムのオプションを指定したり(-Argument)、作業フォルダーを指定する(-WorkingDirectory)こともできます。
New-ScheduledTaskTriggerコマンドレットでは、以下のようなオプションを使って実行タイミングを定義できます。
| オプション | 説明 |
|---|---|
| -Once -At 3am | 午前3時に1回だけ実行 |
| -AtStartUp | コンピュータの起動時に実行 |
| -AtLogon | ログオン時に実行 |
| -Daily -At 3:00:00 | 毎日午前3時に実行 |
| -Daily -DaysInterval 3 -At 3am | 3日ごとの午前3時に実行 |
| -Week | 毎週実行 |
| -Weekly -WeeksInterval 2 -DaysOfWeek Sunday -At 3am | 隔週日曜日の午前3時に実行 |
なお、タスクを管理するコマンドレットとしては、タスクの設定情報を取得するGet-ScheduledTaskや、タスクの設定を変更できるSet-ScheduledTask、タスクを削除できるUnregister-ScheduledTaskが用意されています。
それぞれのコマンドの詳しい使い方は、Get-Helpコマンドレットを使ってコマンドの使用例を確認するのが役立つでしょう。
PS> Get-Help Register-ScheduledTask- -exampleタスク設定を変更する
作成したタスクの設定を変更するときは、画面中央のタスク一覧から、設定を変更したいタスクをダブルクリックします。

すると、タスクのプロパティ画面が表示され、「基本タスクの作成」で設定した内容を変更したり、より詳細な設定ができます。

タスクの保存場所を変更する
作成したタスクは、デフォルトでは「タスクスケジューラライブラリ」内に保存されますが、フォルダーを作成してその中にタスクを保存することができ、自分が作成したタスクを他のタスクと分けて管理したいになどに便利です。
フォルダーを作成するには、画面左側でフォルダーを作成する場所を選択してから、画面右側のメニューから「新しいフォルダー」をクリックします。

なお、既存のタスクを別のフォルダーに移動させたいときは、後述のエクスポート/インポートが必要になります。
タスクの履歴を有効化する
タスクの実行結果は、デフォルトではタスクの一覧で前回の実行結果しか確認できませんが、タスクの履歴を有効化しておけば、タスクの実行履歴がイベントログとして記録されるようになり、タスクがいつ実行されて、どのような結果だったのかを確認できるようになります。
タスクの履歴を有効化するには、画面右側のメニューで「すべてのタスク履歴を有効化する」をクリックします。

タスクの履歴は、それぞれのタスクの「履歴」タブで確認できます。

タスクをエクスポート/インポートする
タスクスケジューラに登録されているタスクは、XML形式ファイルとしてエクスポートしたり、インポートすることができ、タスクをフォルダー間で移動させたいときや、複数のWindowsマシンで同じ設定のタスクを作成するときなどに役立ちます。
タスクをエクスポートするときは、タスクを選択してから、画面右側のメニューで「エクスポート」をクリックします。

タスクをインポートするときは、タスクをインポートしたい場所を選択してから、画面右側のメニューで「インポート」をクリックし、インポートしたいXMLファイルを指定します。

あとがき
Windows環境で定期的に処理を実行したいとき、たいていのことはタスクスケジューラで対応できます。ご活用あれ。