Windowsがシャットダウンスクリプトの実行完了を待ってくれずに、強制停止するのはなぜなのか?:その知識、ホントに正しい? Windowsにまつわる都市伝説(190)
シャットダウン時にウイルスチェックを実行する、あるいはデータのバックアップを取得するといった自動化処理は、Windowsのシャットダウンスクリプトで実現するのが簡単な実装方法です。そのスクリプトの実行が10分以内に完了するものであれば、何の問題もありません。しかし、15分や20分以上の長い時間がかかるものについては、Windowsに古くから存在するバグ(仕様?)に阻まれるかもしれません。
Windows 10のシャットダウンスクリプトが20数分で強制停止される!
何かネタ、いや未解決のユーザーの困りごとはないかと、Microsoftのユーザーフォーラムをたまにチェックしていますが、先日、「Windows 10のシャットダウンスクリプトが22分で終了してしまうのはなぜか」という質問を目にしました。
バックアップコマンドラインツール「WBADMIN」を利用してシャットダウンと同時にバックアップを開始し、終了後に電源をオフにすることを実現したいようなのですが、適切に設定しているのにもかかわらず、22分経過すると電源がオフになってしまうというのです。無限に実行が完了しない簡単なバッチでも、やはり22分で終了してしまうそうです。
シャットダウンスクリプトが実行を強制停止するまで待機時間は、システムの既定で「10分(600秒)」です。この待機時間は、次のポリシー設定を有効化し、秒数を指定することで調整できます。フォーラムの質問者は既にこの設定を行っており、長い秒数や「0(スクリプトが終了するまで待つ)」にしても期待通りに動作してくれません。
- コンピューターの構成\管理用テンプレート\システム\スクリプト\グループ ポリシー スクリプトの最大待機時間を指定する
問題が再現性のあるものかどうか、無限ループで時刻や経過時間をファイルにリダイレクトする簡単なスクリプトをシャットダウンスクリプトに仕込んで実際に試してみました。「グループポリシースクリプトの最大待機時間を指定する」が未構成の場合、Windowsの仕様通り、既定の「10分(600秒)」でスクリプトは強制終了されます(画面1)。
しかし、「グループポリシースクリプトの最大待機時間を指定する」を有効にして、「60分(3600秒)」や「0(スクリプトが終了するまで待つ)」に設定した場合、確かに22〜23分で強制終了されてしまいました(画面2)。
Windowsの各バージョンで実測してみたら……
シャットダウンスクリプトを1秒ごとに経過秒数を出力するPowerShellスクリプトやバッチ(「Windows XP」の場合は「timeout」コマンドや「start-sleep」コマンドが使えないため短いサイクルで時間を出力させました)に変えて、Windowsの幾つかのバージョンで検証してみました。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 次期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に移行すべき理由」を説明します。