隐藏

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

发布:2015/8/16 18:21:45作者:管理员 来源:本站 浏览次数:1428

功能:可以在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)。

问:我们希望向“Web 匿名用户”帐户授予从其他系统上读取信息的访问权;可是,我们不知道该帐户的密码。怎样才能获得该密码呢?

答:IUSR_<计算机名> 帐户就是“Web 匿名用户”帐户,它是在 IIS 的安装过程中创建的。该密码存储在本地 SAM 中(对于 Windows 2000 域控制器而言存储在 Active Directory 中),Metabase 中也存储着该密码。由于该密码存储在 Metabase 中,您就可以使用一个 .vbs 脚本将 IUSR 和 IWAM 这两个帐户的密码提取出来,方法如下:

Dim IIsObject
Set IIsObject = GetObject ("IIS://localhost/w3svc")
WScript.Echo "AnonymousUserName = " & IIsObject.Get("AnonymousUserName") & vbCrlf & _
"AnonymousUserPass = " & IIsObject.Get("AnonymousUserPass") &vbCrlf &vbCrlf &_
"WAMUserName = " & IIsObject.Get("WAMUserName") & vbCrlf & _
"WAMUserPass = " & IIsObject.Get("WAMUserPass")
Set IIsObject = Nothing

注: 通过此脚本可以显示在主属性级别上针对 Web 服务设置的 IUSR 和 IWAM 帐户密码。如果您已将匿名验证配置为使用另外一个用户帐户来访问网站或目录,那么您必须相应地修改该脚本,以反映所做的更新。

整理硬盘整理出这个东西,用的着的保存一下吧。。

Microsoft VBScript语法错误(0x800A03E9)-->内存不足
Microsoft VBScript语法错误(0x800A03EA)-->语法错误
Microsoft VBScript语法错误(0x800A03EB)-->缺少 ':'
Microsoft VBScript语法错误(0x800A03ED)-->缺少 '('
Microsoft VBScript语法错误(0x800A03EE)-->缺少 ')'
Microsoft VBScript语法错误(0x800A03EF)-->缺少 ']'
Microsoft VBScript语法错误(0x800A03F2)-->缺少标识符
Microsoft VBScript语法错误(0x800A03F3)-->缺少 '='
Microsoft VBScript语法错误(0x800A03F4)-->缺少 'If'
Microsoft VBScript语法错误(0x800A03F5)-->缺少 'To'
Microsoft VBScript语法错误(0x800A03F6)-->缺少 'End'
Microsoft VBScript语法错误(0x800A03F7)-->缺少 'Function'
Microsoft VBScript语法错误(0x800A03F8)-->缺少 'Sub'
Microsoft VBScript语法错误(0x800A03F9)-->缺少 'Then'
Microsoft VBScript语法错误(0x800A03FA)-->缺少 'Wend'
Microsoft VBScript语法错误(0x800A03FB)-->缺少 'Loop'
Microsoft VBScript语法错误(0x800A03FC)-->缺少 'Next'
Microsoft VBScript语法错误(0x800A03FD)-->缺少 'Case'
Microsoft VBScript语法错误(0x800A03FE)-->缺少 'Select'
Microsoft VBScript语法错误(0x800A03FF)-->缺少表达式
Microsoft VBScript语法错误(0x800A0400)-->缺少语句
Microsoft VBScript语法错误(0x800A0401)-->语句未结束
Microsoft VBScript语法错误(0x800A0402)-->缺少整型常数
Microsoft VBScript语法错误(0x800A0403)-->缺少 'While' 或 'Until'
Microsoft VBScript语法错误(0x800A0404)-->缺少 'While', 'Until' 或语句未结束
Microsoft VBScript语法错误(0x800A0405)-->缺少 'With'
Microsoft VBScript语法错误(0x800A0406)-->标识符过长
Microsoft VBScript语法错误(0x800A0407)-->无效数字
Microsoft VBScript语法错误(0x800A0408)-->无效字符
Microsoft VBScript语法错误(0x800A0409)-->未结束的字符串常量
Microsoft VBScript语法错误(0x800A040A)-->注释未结束
Microsoft VBScript语法错误(0x800A040D)-->无效使用 'Me' 关键字
Microsoft VBScript语法错误(0x800A040E)-->'loop' 语句缺少 'do'
Microsoft VBScript语法错误(0x800A040F)-->无效的 'exit' 语句
Microsoft VBScript语法错误(0x800A0410)-->循环控制变量 'for' 无效
Microsoft VBScript语法错误(0x800A0411)-->名称重定义
Microsoft VBScript语法错误(0x800A0412)-->必须是行中的第一个语句
Microsoft VBScript语法错误(0x800A0413)-->不能为 non-ByVal 参数赋值
Microsoft VBScript语法错误(0x800A0414)-->调用子程序时不能使用括号
Microsoft VBScript语法错误(0x800A0415)-->缺少文字常数
Microsoft VBScript语法错误(0x800A0416)-->缺少 'In'
Microsoft VBScript语法错误(0x800A0417)-->缺少 'Class'
Microsoft VBScript语法错误(0x800A0418)-->必须在一个类的内部定义
Microsoft VBScript语法错误(0x800A0419)-->在属性声明中缺少 Let , Set 或 Get
Microsoft VBScript语法错误(0x800A041A)-->缺少 'Property'
Microsoft VBScript语法错误(0x800A041B)-->在所有属性的规范中,变量的数目必须一致
Microsoft VBScript语法错误(0x800A041C)-->在一个类中不允许有多个缺省的属性/方法
Microsoft VBScript语法错误(0x800A041D)-->类的初始化或终止程序没有参数
Microsoft VBScript语法错误(0x800A041E)-->属性的 set 或 let 必须至少有一个参数
Microsoft VBScript语法错误(0x800A041F)-->错误的 'Next'
Microsoft VBScript语法错误(0x800A0420)-->'Default' 只能在 'Property' , 'Function' 或 'Sub' 中指定
Microsoft VBScript语法错误(0x800A0421)-->指定 'Default' 时必须同时指定 'Public' ")
Microsoft VBScript语法错误(0x800A0422)-->只能在 Property Get 中指定 'Default'
Microsoft VBScript 运行时错误(0x800A0005)-->无效的过程调用或参数
Microsoft VBScript 运行时错误(0x800A0006)-->溢出
Microsoft VBScript 运行时错误(0x800A0007)-->内存不足
Microsoft VBScript 运行时错误(0x800A0009)-->下标越界
Microsoft VBScript 运行时错误(0x800A000A)-->该数组为定长的或临时被锁定
Microsoft VBScript 运行时错误(0x800A000B)-->被零除
Microsoft VBScript 运行时错误(0x800A000D)-->类型不匹配
Microsoft VBScript 运行时错误(0x800A000E)-->字符串空间不够
Microsoft VBScript 运行时错误(0x800A0011)-->不能执行所需的操作
Microsoft VBScript 运行时错误(0x800A001C)-->堆栈溢出
Microsoft VBScript 运行时错误(0x800A0023)-->未定义过程或函数
Microsoft VBScript 运行时错误(0x800A0030)-->加载 DLL 时出错
Microsoft VBScript 运行时错误(0x800A0033)-->内部错误
Microsoft VBScript 运行时错误(0x800A0034)-->错误的文件名或号码
Microsoft VBScript 运行时错误(0x800A0035)-->文件未找到
Microsoft VBScript 运行时错误(0x800A0036)-->错误的文件模式
Microsoft VBScript 运行时错误(0x800A0037)-->文件已经打开
Microsoft VBScript 运行时错误(0x800A0039)-->设备 I/O 错误
Microsoft VBScript 运行时错误(0x800A003A)-->文件已存在
Microsoft VBScript 运行时错误(0x800A003D)-->磁盘已满
Microsoft VBScript 运行时错误(0x800A003E)-->输入超出了文件尾
Microsoft VBScript 运行时错误(0x800A0043)-->文件过多
Microsoft VBScript 运行时错误(0x800A0044)-->设备不可用
Microsoft VBScript 运行时错误(0x800A0046)-->没有权限
Microsoft VBScript 运行时错误(0x800A0047)-->磁盘没有准备好
Microsoft VBScript 运行时错误(0x800A004A)-->重命名时不能带有其他驱动器符号
Microsoft VBScript 运行时错误(0x800A004B)-->路径/文件访问错误
Microsoft VBScript 运行时错误(0x800A004C)-->路径未找到
Microsoft VBScript 运行时错误(0x800A005B)-->对象变量未设置
Microsoft VBScript 运行时错误(0x800A005C)-->For 循环未初始化
Microsoft VBScript 运行时错误(0x800A005E)-->无效使用 Null
Microsoft VBScript 运行时错误(0x800A0142)-->不能创建所需的临时文件
Microsoft VBScript 运行时错误(0x800A01A8)-->缺少对象
Microsoft VBScript 运行时错误(0x800A01AD)-->ActiveX 部件不能创建对象
Microsoft VBScript 运行时错误(0x800A01AE)-->类不能支持 Automation 操作
Microsoft VBScript 运行时错误(0x800A01B0)-->Automation 操作中文件名或类名未找到
Microsoft VBScript 运行时错误(0x800A01B6)-->对象不支持此属性或方法
Microsoft VBScript 运行时错误(0x800A01B8)-->Automation 操作错误
Microsoft VBScript 运行时错误(0x800A01BD)-->对象不支持此操作
Microsoft VBScript 运行时错误(0x800A01BE)-->对象不支持已命名参数
Microsoft VBScript 运行时错误(0x800A01BF)-->对象不支持当前区域设置
Microsoft VBScript 运行时错误(0x800A01C0)-->未找到已命名参数
Microsoft VBScript 运行时错误(0x800A01C1)-->参数是必选项
Microsoft VBScript 运行时错误(0x800A01C2)-->错误的参数个数或无效的参数属性值
Microsoft VBScript 运行时错误(0x800A01C3)-->对象不是一个集合
Microsoft VBScript 运行时错误(0x800A01C5)-->未找到指定的 DLL 函数
Microsoft VBScript 运行时错误(0x800A01C7)-->代码资源锁定错误
Microsoft VBScript 运行时错误(0x800A01CA)-->变量使用了一个 VBScript 中不支持的 Automation 类型
Microsoft VBScript 运行时错误(0x800A01CE)-->远程服务器不存在或不可用
Microsoft VBScript 运行时错误(0x800A01E1)-->无效图片
Microsoft VBScript 运行时错误(0x800A01F4)-->变量未定义
Microsoft VBScript 运行时错误(0x800A01F5)-->非法赋值
Microsoft VBScript 运行时错误(0x800A01F6)-->对象不能安全地使用 Script 编程
Microsoft VBScript 运行时错误(0x800A01F7)-->对象不能安全初始化
Microsoft VBScript 运行时错误(0x800A01F8)-->对象不能安全创建
Microsoft VBScript 运行时错误(0x800A01F9)-->无效的或无资格的引用
Microsoft VBScript 运行时错误(0x800A01FA)-->类没有被定义
Microsoft VBScript 运行时错误(0x800A01FB)-->出现一个意外错误
Microsoft VBScript 运行时错误(0x800A1398)-->缺少常规表达式对象
Microsoft VBScript 运行时错误(0x800A1399)-->常规表达式语法错误
Microsoft VBScript 运行时错误(0x800A139A)-->错误的数量词
Microsoft VBScript 运行时错误(0x800A139B)-->常规表达式中缺少 ']'
Microsoft VBScript 运行时错误(0x800A139C)-->常规表达式中缺少 ')'
Microsoft VBScript 运行时错误(0x800A139D)-->字符集越界
Microsoft VBScript 运行时错误(0x800A802B)-->未找到元素
ActiveServerPages,ASP0126(0x80004005)-->找不到包含文件
Microsoft OLEDBProviderforODBCDrivers(0x80040E14)-->sql语句出错(字段名错误,或数据类型不匹配)
Microsoft OLEDBProviderforODBCDrivers(0x80040E07)-->sql语句出错(要插入或更新的字段的类型与变量数据类型不匹配)
Microsoft OLEDBProviderforODBCDrivers(0x80040E57)-->sql语句出错(要插入或更新的数据溢出)
Microsoft OLEDBProviderforODBCDrivers(0x80040E10)-->sql语句出错(update字段名或要更新的数据类型错误)
Microsoft OLEDBProviderforODBCDrivers(0x80004005)-->sql语句出错(要插入或更新的字段的数值不能为空值)
Microsoft OLEDBProviderforODBCDrivers(0x80004005)-->打开数据库出错,没有在指定目录发现数据库
Microsoft OLEDBProviderforODBCDrivers(0x80040E37)-->没有发现表
ODBCDrivers(0x80040E21)-->sql语句出错(数据类型不匹配或表/字段错误或处于编辑状态,或不存在于conn打开的数据库中)
ADODB.Recordset(0x800A0BB9)-->sql语句出错(sql语句或conn语句未定义或对一个rs属性进行赋值时发生错误)
ADODB.Recordset(0x800A0CC1)-->rs对像出错(rs对像本身不存在或错误地引用了一个不存在的字段名)
ADODB.Recordset(0x800A0BCD)-->rs对像出错(记录集中没有记录却对记录集进行操作)
ADODB.Recordset(0x800A0E78)-->rs对像出错(记录集不存在,缺少rs.open语句)
ADODB.Recordset(0x800A0CC1)-->rs对像出错(引用了一个不存在的字段名)
ADODB.Recordset(0x800A0E7D)-->conn定义错误
ADODB.Recordset(0x800A0CB3)-->数据库以只读方式打开,无法更新数据
ADODB.Recordset(0x800A000D)-->错误引用rs变量(rs对像已关闭或未定义)