IIS监控--自动重启脚本工具

该日志由 Kevin 发表于 2006, May 9, 11:08 PM

功能:可以在IIS意外终止时自动重启IIS,无须登陆系统,无人职守
条件:
1.服务器安装过Windows Script 5.6,可以正常运行.vbs脚本。
2.确保系统服务Windows Management Instrumentation 正常启动。

将以下代码复制为 fu.vbs,放至系统盘WINNT/System32/下,注意重命名时要和“cscript //h:cscript&&cscript fu.vbs” 中的fu.vbs保持一至,否则计划任务启动时报找不到文件的错误。
然后做计划任务,让其在系统启动时运行监控
VBB代码如下:
 
  strFullName WScript.FullName
strWshHost 
Right(strFullName11)
&
apos;WScript.Echo "Default script host: " &ampstrWshHost
If strWshHost = "WScript.exe&quotThen
Set objShell 
CreateObject("WScript.Shell")
objShell.Run _
"%comspec% /""cscript //h:cscript&&cscript fu.vbs""", _
MAXIMIZE_WINDOW
If Err.Number <&gt0 Then
WScript
.Echo "Error 0x" &amphex(Err.Number) & &quotoccurred. " &amp_
Err
.Description & ". " &ampVbCrLf &amp_
"Could not temporarily change the default script host to Cscript."
Err.Clear
WScript
.Quit
End 
If
WScript.Quit
End 
If
&
apos;----上面这段代码是强制到cscript命令行,一般要在cmd命令行下输入cscript *.vbs,如果直接执行vbs会用wscript打开,这样只会弹个对话框,我不喜欢,有不想每次都cscript,所以要写点额外的代码,双击后会调用一个wscript执行csript,然后再消灭自己,幸好微软的网站上提供了这个代码------------------------------------
strComputer = "."
Set objWMIService GetObject("winmgmts:&quot_
& "{impersonationLevelimpersonate, (Security)}!" &ampstrComputer & "rootcimv2")
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(whichfilethen 
iomode
=create=true
'Set MyFile fso.CreateTextFile(whichfile,True)
else
iomode=create=false 
'Set MyFile fso.CreateTextFile(whichfile)
end if
set MyFile fso.OpenTextFile(whichfile,iomode,create)
&
apos;MyFile.writeLine("事件发生于 "&now&&quot重启iis成功"&vbctrf)
if 
create=true then
MyFile
.WriteLine ""
MyFile.WriteLine ""
MyFile.WriteLine ""
MyFile.WriteLine ""
MyFile.WriteLine ""
MyFile.WriteLine ""
end if
MyFile.WriteLine &quotiis重启时间: <font color=red>" &now& "</font>"
&
apos;MyFile.WriteLine &quot是否成功是 <>"
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)。

网摘: Yahoo Baidu Google Bolaa 365Key Yesky Wozhai POCO ViVi YouNote Hexun Del.icio.us Yeeyoo igooi I2Key Cn3 Bytemen Furl Blinklist Blogmarks Technorati 分享到饭否

« 上一篇: 检测浏览器插件是否安装并提示下载 | 下一篇:去掉Intel集成显卡的桌面右键菜单 »

引用: 点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5
发表评论:( 来了就留个脚印吧!你的参与是我最大的动力!)