本記事は、マイクロソフト社員によって公開されております。
こんにちは、Windows サポートチームの長尾です。
今回は、Windows 10 バージョン 1607 以降、及び、Windows Server 2016 以降で発生する、タスク スケジューラのタスクが開始されない問題についてご紹介します。
■ 事象
OS 起動後、一定期間経過すると、以下のようなタスクが開始されないという問題が報告されています。
- ログオン時に遅延して開始するタスク
以下のように、「タスクの開始」が「ログオン時」、かつ、「遅延時間を指定する」にチェックがついているタスクが該当します。
- 繰り返し実行されるタスク
以下のように、「毎日」、「毎週」、「毎月」のいずれかが選択されており、「繰り返し間隔」にチェックがついているタスクが該当します。開始時刻 (以下の場合は、2021/03/02 0:00:00) に一度だけ実行されますが、その後の繰り返し実行 (以下の場合は 1 時間おき) が実行されません。
■ 原因
ログオン時に遅延して開始するタスクを作成する際にメモリ上に確保されたデータ (オブジェクト) が、そのタスクが完了した後も解放されずに残り続け、そのオブジェクトの個数が、OS 内部で定義されている上限値を越えると、それ以降、ログオン時に遅延して開始するタスクが開始されない状態となります。
また、繰り返し実行されるタスクについても、内部的に同様の仕組みを利用しているため、上記の上限値を越えると、それ以降、タスクの繰り返し実行を行うことができない状態となります。
(補足)
事象の要因となるタスクと、事象の影響を受けるタスクが、以下のように異なっていることにご注意ください。
事象の要因となるタスク :
ログオン時に遅延して開始するタスク事象の影響を受けるタスク :
ログオン時に遅延して開始するタスク
繰り返し実行されるタスク (トリガー「毎日」「毎週」「毎月」)
また、OS 標準のコマンドやツールによって、メモリ上に確保されているオブジェクトの個数を確認したり、上限値を増やすことはできません。
■ 発生条件
弊社で確認できている範囲では、以下 2 点の発生条件があります。
これらの条件を満たす環境で、長期間 OS を再起動していない場合に、事象が発生します。
OS バージョン
Windows 10 version 1607 以降の OS バージョンで発生します。
サーバー製品では Windows Server 2016 以降が該当します。ログオン時に遅延して開始するタスクが存在する環境
ログオン時に遅延して開始するタスクは、管理者権限で起動した PowerShell で、以下のコマンドを実行することで確認できます。コマンド :
Get-ScheduledTask |? {$_.Settings.Enabled -And ($_.Triggers |? {$_.Enabled -And $_.Delay -And $_.ToString() -eq “MSFT_TaskLogonTrigger”})} |% {$_.TaskPath+$_.TaskName}出力結果の例 :
\Microsoft\Windows\AppID\SmartScreenSpecific
\Microsoft\Windows\LanguageComponentsInstaller\Installation
\Microsoft\Windows\WindowsUpdate\Automatic App Update
また、本事象は、以下のような環境で、発生しやすい傾向があります。
ログオン時に遅延して開始するタスクの数が多い
この問題は、ログオン時に遅延して開始するタスクが内部的に作成したデータ構造が、タスクが完了した後も残存することで発生するため、ログオン時に遅延して開始するタスクの数が多い環境ほど、事象が早期に発生しやすくなります。ログオン ユーザー数が多い
1 日あたりの、ユーザーのログオン回数が多い環境ほど、事象が早期に発生しやすくなります。
■ 弊社での対応状況
本問題は、米国の弊社製品開発部門において、問題が発現した場合の影響度、修正を行った場合の影響度、修正の難易度など、様々な要素を含めて検討された結果、残念ながら、現時点では、修正が見送られている状況です。
弊社開発部門においては、将来的にリリースを予定している、開発中の Windows OS において本問題の修正を行うべく、対応を検討しています。
当面の間、ご不便をおかけいたしますが、現在 本問題にてお困りの環境におきましては、以下の回避策にて、ご対応を続けていただけますよう、お願いいたします。
■ 回避方法
本問題は、内部的なオブジェクトの蓄積により発現する問題であるため、定期的な Windows OS の再起動を実施いただくことで問題の発生を回避いただくことが可能です。
最後に再起動を実施いただいてから、タスク スケジューラのタスクが開始されない事象が発生し始めた時期までの期間よりも前に、再起動を行うことをご検討ください。
なお、本問題は、ユーザーのログオン数や、ログオン時に遅延して開始するタスクの個数により、再現までの日数が変化しますので、状況や設定に変化があった場合には、発生までの日数が大きく変わる可能性がある点にご注意ください。
本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。