web-dev-qa-db-ja.com

Windows Server 2016でスケジュールされたタスクは、無効にしてから有効にした後は実行されません

Windows Server 2016のタスクスケジューラで、無効にしてから再度有効にした後、繰り返しタスクを実行できないという問題があります。

将来5分の「トリガー->開始」でタスクを作成し、5分ごとに実行するようにタスクを設定します。 「設定->スケジュールされた開始を逃した後、できるだけ早くタスクを実行する」オプションがチェックされています。

すべてが正常に機能します。タスクはスケジュールされた開始時間に実行され、その後5分ごとに実行されます。

タスクを無効にして、5分以上待ちます。

タスクを有効にします。再度実行されることはありません。

次の実行時間は5分ごとに更新され続けますが、タスクは実行されず、最後の実行時間は更新されません。

タスクが再度有効になると、タスク履歴にエントリはなく、Windowsイベントログにイベントはありません。

翌日に開始時刻に達すると、タスクは再び実行を開始しますが、タスクが再度有効になってから開始時刻が再び来るまでに長い遅延が発生する可能性があるため、これは望ましくありません。

1
Tim Callahan

これは予想される動作です。タスクは、トリガー条件の1つが満たされた場合にのみ開始されます。タスクを無効にするという行為は、タスクを停止するのと同じ効果があります。それが発生すると、トリガー条件が満たされるまで、それは再び実行されません。残念ながら、新しいトリガーを作成するときの最小間隔はDailyであり、シナリオでは多少柔軟性がありません。

2つのオプションが思い浮かびます。

  • タスクを無効にして実行を停止する代わりに、単に停止します。実行を短時間だけ停止する必要がある場合は、これで十分な場合があります。ただし、タスクの開始または停止を完全に制御する必要がある場合は、トリガー条件を定義せずに、タスクを手動で開始/停止してください。
  • タスクが有効になった後にトリガーが起動するように、複数のトリガーを作成します。これは明らかに理想的ではありません。特に、5分ごとにタスクを実行する必要がある場合はそうです。

タスクは毎日実行され、無期限または毎日繰り返されるように設定されました。 Run Onceに変更し、無期限に繰り返し、タスクを無効にした後、有効にすると実行を再開します。

このように設定すると、スケジューラーが「トリガーされた後、5分ごとに無期限に繰り返します」と表示するため、これは機能すると思います。したがって、タスクがトリガーされると、無効にされても「トリガーされた」状態のままになるため、再度有効にすると、スケジュールどおりに実行が再開されます。

注:タスクを最初に設定するときは、タスクが初めてトリガーされるように、将来的に開始時刻を設定する必要があります。

2
Tim Callahan