Windows Server 運用・管理

Classic ASP / VBScript から Windows Server 2019 を再起動させる方法は?

Classic ASP / VBScript から Windows Server 2019 を再起動する方法

Windows Server 2019 が急に重くなる…などの障害対策用に Classic ASP / VBScript からサーバーを再起動させる機能を追加したい…そういった機能の追加方法をご紹介いたします。

Classic ASP とは?

Classic ASP とは、リリース当初「ASP」(Active Server Pages) と呼ばれ Microsoft 社の Web サーバーソフトウェア「IIS」(Internet Informat Service) 上で動作するスクリプト実行環境のことを呼びます。

Microsoft Excel 等と同じ言語 VBScript で動作させることができますが、その後 .NET 環境がリリースされたために “Classic ASP” と呼ばれるようになりました(PHP と言語体系が酷似しています)。

最新の Windows Server 2019 でも問題なく動作させることができます。

Classic ASP から直接再起動をかけることはできない

Classic ASP を動作中の VBScript から、サーバーを直接再起動させることはできません。そのため、ちょっとした細工が必要になります。

手順としては以下の通りです…

前提条件

運用中の Web サービス “https://hogehoge.com/” 内のメニューから、サーバーを再起動させる…と仮定します。

機能概要

  1. Classic ASP メニューから “https://hogehoge.com/lib/reboot.txt” を作成する機能を追加します。
  2. Windows Server 用の VBS 監視プログラム “reboot.vbs” を作成し、”/lib/reboot.txt” が存在する場合には、”/lib/reboot.txt” を削除し、サーバーを再起動させる…機能を追加します。
  3. Windows Server タスクスケジューラから5分間隔で “reboot.vbs” を継続的に実行します。

reboot.vbs のコーディング

“reboot.vbs” プログラムは、こんな感じになります…

Option Explicit

Dim blnReboot
Dim objFSO
Dim objShell
Dim strCurrentDir

Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

strCurrentDir = objFSO.getParentFolderName(WScript.ScriptFullName)

If objFSO.FileExists(strCurrentDir & "\reboot.txt") Then
	blnReboot = True
	objFSO.DeleteFile(strCurrentDir & "\reboot.txt")
End If

Set objFSO = Nothing

If blnReboot Then
	objShell.Run "shutdown.exe -r -t 00", 0
End If

Set objShell = Nothing

Windows Server 2019 タスクスケジューラの設定

Windows Server 2019 タスクスケジューラの設定は、こんな手順になります…

  1. [スタート] – [Windows 管理ツール] – [タスク スケジューラ] をクリックして起動します。
  2. [基本タスクの作成] をクリックします。
  3. [名前] に「Reboot Checker」等入力して [次へ] をクリックします。
  4. [○ 1回] にチェックして(**:*0:00 に変更し)[次へ][次へ] と進みます。
  5. [○ プログラムの開始] をチェックして [次へ] をクリックします。
  6. “C:\Windows\System32\wscript.exe” を選択し、[引数の追加] 欄に 上記の “reboot.vbs” を選択して [次へ] をクリックします。
  7. [完了] をクリックして保存します。

プロパティから編集する

  1. [全般] – [○ ユーザーがログオンしているかどうかに関わらず実行する] を選択し [□ 最上位の特権で実行する] もチェックします。
  2. [条件] タブを開き [編集] をクリックして [□ タスクを実行するためにスリープを解除する] をチェックします。
  3. [トリガー] タブを開き [□ 繰り返し間隔] をチェックし [5 分間] を選択、[継続時間] – [無期限] を選択します。
  4. [OK] をクリックして保存し、[OK] をクリックしてパスワードを入力して閉じます。
  5. [実行] ボタンをクリックして [実行中] にしておきます

確認作業

Classic ASP メニューから “https://hogehoge.com/lib/reboot.txt” を作成し、5分以内にサーバーが再起動して Classic ASP が一時的に動作しなくなるか…確認します。

COMMENT

メールアドレスが公開されることはありません。