誤解しているのは中の人? Windowsの「曜日」の話 〜その2〜:その知識、ホントに正しい? Windowsにまつわる都市伝説(144)
Windowsの「タスクスケジューラ」における曜日指定のスケジュールされたタスクは、利用者側の誤解やソフトウェアのバグが原因で、意図しないタイミングで実行される場合があります。また1つ、謎のバグが存在する可能性が明らかになりました。
「曜日」の誤解と「タスクスケジューラ」の信じ難いバグ
本連載第136回では、Windows Updateの定例更新日の誤解、それに絡めてWindows 10 バージョン1803以前のWindows 10、および対応するバージョンのWindows Serverに存在した「タスクスケジューラ」の謎のバグについて紹介しました。
- 意外と誤解している人が多い「曜日」の話(本連載 第136回)
第136回では、Windows Updateの毎月定例の更新日は「第2火曜日固定」にもかかわらず(日本では時差の関係で翌水曜日)、「第2水曜日」と勘違いしている人がいることを指摘しました。また、それに絡めて毎月(または毎週)の曜日指定でスケジュールされたタスクにある、よくある誤解について指摘しました。その誤解とは、タスクスケジューラには「第N曜日」(Nは1〜4、または最終)という指定はあっても、「第N週」という指定はそもそも存在しないということです。
しかし、Windows 10 バージョン1803以前のWindows 10、および対応するバージョンのWindows Serverには、長い間、謎のバグが存在し、その誤解を助長させていたかもしれないことを指摘しました。“謎のバグ”とは、曜日指定でスケジュールされたタスクが、実行日が7の倍数のときにタスクが実行されなかったり、1週間前に実行されたりするという信じ難いバグです。このバグは、2018年9月の更新プログラムで修正済みです(Windows 10 バージョン1511および1703は修正の予定なし)。
2019年8月21日、Japan Windows Commercial Supportフォーラムが、Windowsの一部のバージョンに存在する、また別の謎のバグについて情報を公開しました。今度の謎のバグとは、曜日指定のタスクが、前の曜日(つまり前日)に実行される場合があるというものです。
- 曜日指定のタスクが前の曜日に実行されてしまう問題について(Japan Windows Commercial Support)
このバグが影響するのは、以下の4つの条件を全て満たす場合だそうです。おそらく、Windows 10バージョン1607の全てのエディションに影響すると思いますが、LTSBではなく半期チャネル(SAC)バージョンは既にサポートが終了しているため、含まれないのでしょう。当面の回避策は、日本時間(JST)AM9:00以外に少しずらすこと(例えば、AM8:59)が案内されています。
(1)Windowsのバージョンが以下であること
Windows 8.1/Windows Server 2012 R2
Windows 10 Enterprise 2016 LTSB/Windows Server 2016
Windows 10 バージョン1903
(2)2019年3月第3週以降の更新プログラムが適用されていること(Windows 10 バージョン1903はリリース時から)
(3)毎週や毎月の指定された曜日に実行するタスクであること
(4)タスクの実行時間が日本時間(JST)AM9:00(UTC 0:00)であること
第136回では、Windows Updateの定例更新日を「第2火曜日」に(つまり日本では前日に)お知らせする方法として、「明日は毎月恒例のWindows Updateの日(第2火曜日の翌日)」というメッセージを表示させるタスクを紹介しました。このタスクは毎月第2火曜日の9:00に実行するようにスケジューリングしていたのですが、当時はWindows 10 バージョン1809だったので上記の要件は満たさず、問題なく機能しているようでした(画面1)。
その後、Windows 10 バージョン1903にアップグレードしましたが、その時点で上記の要件を満たしてしまうことになります。しかし、第2火曜日の9:00にちゃんとメッセージを表示していたように記憶しています。記憶は定かではありません。これは一体どういうことでしょうか。このバグの影響を受けるはずの「Windows 8.1」「Windows Server 2016」、Windows 10 バージョン1903の3台にダミーのタスクを作成して実験してみました。
バグ再現テストを仕込む
Windows 10 バージョン1903(画面2)、Windows 8.1(画面3)、Windows Server 2016の3台に、次のような設定で、毎週の金曜日と月曜日に「プログラムの開始」操作でログファイルを出力するだけの簡単な2つのタスクを作成しました。「次回の実行時刻」を見る限り、それぞれ次の金曜日と月曜日のAM9:00(JST)に実行が予定されているのが分かります。
DemoFridayTask
トリガー:毎週金曜日、AM9:00に起動
操作:powershell.exe -Command "& {(Get-Date).ToString('yyyy/MM/dd dddd HH:mm') >> C:\work\logs\FridayTask.log}"
DemoMondayTask
トリガー:毎週月曜日、AM9:00に起動
操作:powershell.exe -Command "& {(Get-Date).ToString('yyyy/MM/dd dddd HH:mm') >> C:\work\logs\MondayTask.log}"
この例では「曜日」を含めるため、Windows PowerShellの「Get-Date」コマンドレットを利用していますが、日時だけを出力するなら「cmd.exe /c "echo %DATE%%TIME% >> C:\Work\logs\ファイル名.log"」のように簡単に記述できます。
タスクが正常に実行されれば、「C:\Work\Logs\FridaryTask.log」と「MondayTask.log」には次のように「年月日 金曜日 09:00」および「年月日 月曜日 09:00」のテキストが記録されるはずです。謎のバグが再現するなら、それぞれ「年月日 木曜日 09:00」および「年月日 日曜日 09:00」になるでしょう。
C:\Work\Logs\FridayTask.log
2019/08/23 金曜日 09:00
2019/08/30 金曜日 09:00
...
C:\Work\Logs\MondayTask.log
2019/08/26 月曜日 09:00
2019/09/02 月曜日 09:00
...
前日に実行されるではなく、前日と当日の2回だった
関連記事
- 次期Windows 10最新動向:リリース秒読みの「19H1」はこう変わる
間もなくリリースされるWindows 10の新しい機能アップデート「19H1」。それに実装される新機能をまとめてみた。また、同時に変更となるライフサイクルなどについても解説する。 - 【新元号発表目前!】Windows 10/Officeの新元号対応どうするどうなる!?
新元号への切り替えが2019年5月1日に行われる。Windows OS/Officeでこの新元号に対応するにはどうすればよいのか、注意すべき点はあるのかなどをまとめる。 - 【Windows 10】できる人は知っているキーボードショートカット
Windows 10でキーボードショートカットを使うと、マウスを使うよりも素早い操作が可能だ。ただ、種類も多く、知っていると便利なのに意外と使われていないものも多いようだ。ここでは基本的なキーボードショートカットを紹介する。 - Windows 10への移行計画を早急に進めるべき理由
本連載では、これからWindows 10への移行を本格的に進めようとしている企業/IT管理者に向け、移行計画、展開、管理、企業向けの注目の機能を解説していきます。第1回目は、「Windows 10に移行すべき理由」を説明します。
Copyright © ITmedia, Inc. All Rights Reserved.