Windowsのグループポリシーで設定するスクリプト
- スタートアップスクリプト
- シャットダウンスクリプト
- ログオンスクリプト
- ログオフスクリプト
には、タイムアウト時間が存在するのでしょうか?
答えはYesです
レジュメ
ログオフスクリプト・シャットダウンスクリプトのタイムアウト時間は標準で10分
以下のような環境でテストをしてみました
テストを実行したサーバーは
- Windows Server 2012
です
wait.bat内の待ち時間を10分にした場合と、11分にした場合でテストしてみました。
waitバッチ内では
- タイムスタンプ出力
- 待ち時間(wait時間)
- タイムスタンプ出力
の処理が書いてあります
ログオンスクリプト・スタートアップスクリプトはタイムアウト時間がない
結果としましては、待ち時間10分の場合は、基本的にスクリプトを実行完了でき、待ち時間を11分とした場合は、ログオフスクリプト・シャットダウンスクリプトは処理の途中でタイムアウトされ実行が強制的に中止されます。
※ wait10分のログオフスクリプトは紙一重で処理が中断されてしまいました。
スタートアップスクリプト・ログオンスクリプトは10分のタイムアウト時間を越えて実行できたので(強制終了されなかったので)処理のタイムアウト時間はなさそうです
イベントログにスクリプトがタイムアウトしたか出力されるの?
答えはNoでした
システムのイベントログにも、アプリケーションのイベントログにもタイムアウトされたことが出力されていませんでした。
ちゃんと実行スクリプトでログを出力してチェックするしかなさそうですね。
そもそもスタートアップスクリプト・シャットダウンスクリプトはどうやって設定するの?
もっと前提の話になりますが、Windowsのスタートアップスクリプトやシャットダウンスクリプトは、ローカルグループポリシーで設定できます。
設定したいサーバー・パソコンで「gpedit.msc」コマンドを実行すると以下の窓が起動します
「コンピュータの構成」-「Windowsの設定」-「スクリプト(スタートアップ/シャットダウン)」内で設定します
また、ログオン・ログオフスクリプトは上記設定画面の「ユーザーの構成」-「Windowsの設定」-「スクリプト(ログオン/ログオフ)」内で設定できます。
スクリプトのタイムアウト時間を変更する方法
実は、シャットダウンスクリプトとログオフスクリプトのタイムアウト時間を標準の10分から変更する方法があります。
同じくローカルグループポリシーで設定を変更します
「gpedit.msc」を実行し、左ツリーの
「コンピューターの構成」-「管理用テンプレート」-「システム」-「スクリプト」 を開き「グループポリシースクリプトの最大待機時間を指定する」をクリックします
参考までに、Windows Server 2008 R2では「スクリプトの実行時間の上限を設定する」と表示されています
選択のラジオボタンを「有効」とするとタイムアウトの時間が変更できるようになります
「グループポリシースクリプトの最大待機時間を指定する」のヘルプ内容
このポリシー設定は、グループ ポリシーによって適用されるスクリプトの実行をシステムが待機する時間を決定します。
この設定によって、グループ ポリシーで適用されるすべてのログオン、ログオフ、起動およびシャットダウンのスクリプトが実行を終了するまでの合計時間が制限されます。指定時間が経過してもスクリプトが終了しない場合は、システムによってスクリプト処理が中止され、エラー イベントに記録されます。
この設定を有効にした場合、[時間 (秒):] ボックスに、一連のスクリプトの実行が終了するまでの待機時間の上限を 1 から 32,000 までの数字で入力できます。時間の長短にかかわらず、スクリプトが終了するまでシステムが待つように指定するには、「0」を入力してください。
このスクリプトが完了するまで他のシステムによるタスクを実行できない場合には、この間隔は特に重要となります。既定では、各起動スクリプトは、次のスクリプトが起動される前に完了する必要があります。また、[ログオン スクリプトを同期的に実行する] 設定を使って、ログオン スクリプトが完了するのを待ってからデスクトップを読み込むようにシステムを設定することができます。
間隔を長く設定しすぎると、システムに遅れが生じ、他のユーザーに迷惑がかかることがあります。しかし、間隔を短く設定しすぎると、必要なタスクが実行されずシステムが不完全な状態になる可能性があります。
この設定を無効にした場合、または構成しなかった場合、一連のスクリプトの実行時間の上限は 600 秒 (10 分) までです。これは既定値です。
まとめ
Windowsのシャットダウンスクリプト・ログオフスクリプトの実行時間は標準設定で10分です。10分でタイムアウトとなり強制終了されます。
一方、スタートアップスクリプト・ログオンスクリプトは10分以上実行できます。