IIS監控--自動重啟指令碼工具

來源:互聯網
上載者:User

功能:可以在IIS意外終止時自動重啟IIS,無須登陸系統,無人職守
條件:
1.伺服器安裝過Windows Script 5.6,可以正常運行.vbs指令碼。
2.確保系統服務Windows Management Instrumentation 正常啟動。

將以下代碼複製為 fu.vbs,放至系統硬碟WINNT/System32/下,注意重新命名時要和“cscript //h:cscript&&cscript fu.vbs” 中的fu.vbs保持一至,否則計劃任務啟動時報找不到檔案的錯誤。
然後做計劃任務,讓其在系統啟動時運行監控
vbs代碼:

strFullName = WScript.FullName
strWshHost = Right(strFullName, 11)
'WScript.Echo "Default script host: " & strWshHost
If strWshHost = "WScript.exe" Then
Set objShell = CreateObject("WScript.Shell")
objShell.Run _
"%comspec% /k ""cscript //h:cscript&&cscript fu.vbs""", _
MAXIMIZE_WINDOW
If Err.Number <> 0 Then
WScript.Echo "Error 0x" & hex(Err.Number) & " occurred. " & _
Err.Description & ". " & VbCrLf & _
"Could not temporarily change the default script host to Cscript."
Err.Clear
WScript.Quit
End If
WScript.Quit
End If
'- ---上面這段代碼是強制到cscript命令列,一般要在cmd命令列下輸入cscript *.vbs,如果直接執行vbs會用wscript開啟,這樣只會彈個對話方塊,我不喜歡,有不想每次都cscript,所以要寫點額外的代碼,雙擊後會調用一個wscript執行csript,然後再消滅自己,幸好微軟的網站上提供了這個代碼------------------------------ ------
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel= impersonate, (Security)}!//" & strComputer & "/root/cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("Select * from __instancecreationevent where TargetInstance isa'Win32_NTLogEvent' and TargetInstance.EventCode = '7031' ")
Wscript.Echo "開始監視iis於 "&now
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Wscript.Echo "重新啟動iis "&now
Set objShell = CreateObject("WScript.Shell")
objShell.Run "%COMSPEC% /c IISRESET.EXE",,1
'------核心程式

whichfile=("iisresetlog.htm")
set fso=createobject("Scripting.FileSystemObject")
if Not fso.FileExists(whichfile) then
iomode=2 : create=true
'Set MyFile = fso.CreateTextFile(whichfile,True)
else
iomode=8 : create=false
'Set MyFile = fso.CreateTextFile(whichfile)
end if
set MyFile = fso.OpenTextFile(whichfile,iomode,create)
'MyFile.writeLine("事件發生於 "&now&" 重啟iis成功"&vbctrf)
if create=true then
MyFile.WriteLine ""
MyFile.WriteLine ""
MyFile.WriteLine ""
MyFile.WriteLine ""
MyFile.WriteLine ""
MyFile.WriteLine ""
end if
MyFile.WriteLine " iis重啟時間: <font color=red>" &now& "</font>"
'MyFile.WriteLine " 是否成功: 是 <>"
MyFile.WriteLine "<br>"
MyFile.WriteLine " "
MyFile.Close
set fso=nothing
Loop
'-----用fso記錄iis 重啟日誌
注意:TargetInstance.EventCode = '7031' 這段代碼控制了在什麼情況下重啟IIS,7031是系統的事件 ID代號,即當系統日誌出現7031這樣的事件時重啟IIS。
下面是系統7031事件描述:IIS Admin Service 服務意外地終止,這種情況已經出現了 1 次。以下的修正操作將在 1 毫秒內運行: 回合組態的故障恢複程式。
同樣的道理,可以根據不同的事件ID觸發此指令碼,修改objShell.Run "%COMSPEC% /c IISRESET.EXE",,1 這一行代碼,可以執行任何win32所支援的程式,即可以根據任意事件觸發執行任意的程式,那樣用途更廣了。

另:
%comspec%開啟一個命令列視窗。%comspec% 是一個指向當前命令列外殼的環境變數。通過使用 %comspec%,您不必擔心命令列外殼是 cmd.exe 還是 command.exe;%comspec% 會自動選擇正確的一個。

/k 在調用 Dir 命令後,確保視窗始終保持開啟。這就是 /k 參數的用處。如果我們想要確保命令視窗會在 Dir 命令調用完成後被自動關閉,應該將 /k (keep) 修改為 /c (close)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.