用wmi完成iis智能重启
发布时间:2021-12-23 14:45:25 所属栏目:经验 来源:互联网
导读:公司的web服务器老是由于dllhost.exe 的内存无法释放而当掉自己,导致asp页面不能正常访问,最可气的是这种情况每每发生在我休假的时候,不得已被拉回来重启一下iis,为了使自己的五一长假能安稳些,写了个iis的自动重启程序,我见网上类似的程序,都是定时重
公司的web服务器老是由于dllhost.exe 的内存无法释放而当掉自己,导致asp页面不能正常访问,最可气的是这种情况每每发生在我休假的时候,不得已被拉回来重启一下iis,为了使自己的五一长假能安稳些,写了个iis的自动重启程序,我见网上类似的程序,都是定时重启,我理想的状况是不要过于频繁启动,只在dllhost.exe这个进程当掉的时候,再重启,于是有了下面这段代码,原理是监视应用程序日志,当出现事件id是5的错误时(无法为asp程序提供足够内存),重启iis,呵呵。 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 & "ootcimv2") Set colMonitoredEvents = objWMIService.ExecNotificationQuery _ ("Select * from __instancecreationevent where TargetInstance isa'Win32_NTLogEvent' and TargetInstance.EventCode = '4' ") 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 '------核心程序,呵呵,短吧,wmi万岁 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 " (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |