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