タスク スケジューラで無期限に繰り返しを行うタスクを作成する際の注意点

Last Update: feedback 共有

※ 本記事はマイクロソフト社員によって公開されております。

こんにちは。 Windows プラットフォーム サポート担当のロベルトです。

本記事では、タスク スケジューラを用いて無期限に繰り返し実行が行われるタスクを作成される際の、注意点についてご紹介します。

タスク スケジューラのタスクにスケジュール実行のトリガーを設定する際には、繰り返し間隔を指定することが可能であり、その際には継続時間 (いつまで繰り返しを行うか)を指定します。




この継続時間には「無期限」(半永久的に繰り返しを行う)を指定することが可能ですが、この継続時間「無期限」は、トリガー設定の 毎日 / 毎週 / 毎月 の動作に影響し、いくつかご所望の動作とは異なる振る舞いにつながる可能性があります。

そのため、繰り返し実行を行うタスクの作成時には、以下の通りトリガー設定としては “毎日 / 毎週 / 毎月 + 繰り返し間隔の継続時間「無期限」” の設定ではなく、継続時間「1 日間」などの設定、または、トリガー設定として(毎日 / 毎週 / 毎月ではなく)1 回を設定する方針をご検討ください。

× : 毎日 / 毎週 / 毎月 + 繰り返し間隔の継続時間「無期限」
○ : 毎日 / 毎週 / 毎月 + 繰り返し間隔の継続時間「1 日間」など
○ : 1 回 + 繰り返し間隔の継続時間「無期限」

以降では、ご参考情報として “毎日 / 毎週 / 毎月 + 繰り返し間隔の継続時間「無期限」” の設定時に発生することを確認している具体的な動作、ならびに前述した対応の実現手順についてご紹介します。

タスクが多重実行されてしまう

以下の条件を満たすタスク スケジューラのタスクは、重複して実行される動作となる場合があることを確認しております。

<再現条件>
 ・トリガーにて 毎日 / 毎週 / 毎月 のいずれかが設定されている
 ・上記のトリガーに繰り返し間隔が設定されており、継続期間が “無期限” に設定されている

具体的に、上記の条件を満たすタスクは、日付を跨ぐタイミング以降に、重複して実行されます。後述の具体例をご参照ください。

トリガー設定:

  • タスクの開始 :スケジュールに従う
  • 設定:毎日
    • 開始:2023/01/01 0:00:00
    • 間隔:1 日
  • 詳細設定
    • 繰り返し間隔:チェックあり
      • 間隔:2 分間
      • 継続時間:無期限

この場合、トリガーは毎日 0:00:00 に開始され、またその後、2 分間おきに繰り返し実行されます。繰り返しの継続時間は無期限であるため、例えば 01/01 0:00:00 に開始されたトリガーは 0:00:00、0:02:00、0:04:00、0:06:00、0:08:00、そして 1 日後 (24 時間後) の24:00:00 (つまり 01/02 の 0:00:00) および、それ以降の 01/02 の 0:02:00、0:04:00、0:06:00 と、半永久的に繰り返し実行が要求される動作となります。 また、上記に加えて、翌日 01/02 の 0:00:00 には「毎日」の設定に従い、その日のトリガーが 0:00:00 に開始を要求されます。

その結果、01/02 の 0:00:00 以降には、重複して 2 つのインスタンスの開始要求が行われる可能性があります。

作成後や、有効化後にタスクが実行されない

以下の条件を満たすタスク スケジューラのタスクが、タスクを登録した場合および無効化した上で再度有効化した場合に、”開始” に設置した時刻が来るまで、繰り返し実行が行われない動作となる場合があることを確認しております。

 <再現条件>
 ・トリガーにて 毎日 / 毎週 / 毎月 のいずれかが設定されている
 ・上記のトリガーに繰り返し間隔が設定されており、継続期間が “無期限” に設定されている

詳細については、後述の具体例をご参照ください。

トリガー設定:

  • タスクの開始 :スケジュールに従う
  • 設定:毎日
    • 開始:2023/01/01 09:00:00
    • 間隔:1 日
  • 詳細設定
    • 繰り返し間隔:チェックあり
      • 間隔:15 分間
      • 継続時間:無期限

この場合、トリガーは毎日 09:00:00 に開始され、またその後、15 分おきに繰り返し実行されます。繰り返しの継続時間は無期限であるため、例えば 01/01 09:00:00 に開始されたトリガーは 09:00:00、09:15:00、09:30:00 という間隔で実行されます。

しかしながら、”開始” で設定されている時刻より後のタイミングでタスクをいったん無効化し、再度有効化した場合に、15 分間隔のタスクの実行が行われない動作となる場合があります。この場合でも、翌日の 09:00:00 のタイミングで(「毎日」のトリガーが開始を要求することで)実行が再開し、またそれ以降は 15 分おきに実行される動作となります。

対応方法

上記のような条件に該当するタスクは、繰り返しの継続時間 “無期限” を指定されていることから、基本的には半永久的に繰り返し実行される動作を期待されていると思われます。
そのため半永久的に繰り返し実行を行う動作を維持しつつ上記の動作を回避するため、以下の手順の通り、該当トリガーを 毎日 / 毎週 / 毎月 から “1 回” に変更する対応をご検討ください。

  1. タスク スケジューラを起動します。
  2. 該当のタスクをダブルクリックすることで、プロパティ画面を開きます。
  3. “トリガー” タブに移動し、該当のトリガーを選択した上で、[編集] を選択します。
  4. 毎日 / 毎週 / 毎月 を “1 回” に変更し、継続時間は “無期限” のまま、[OK] をクリックします。
  5. [OK] をクリックすることで、変更した設定を保存します。
    ※ パスワードの入力が要求される場合があります。



本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更 される場合があります。