自动安装筛选器vbs脚本
'参数:
'1:将筛选器更换为新的dll(MyFilter_new)
'2:与1相反,恢复
'3:加载新的筛选器
'4 :卸载筛选器
Err.clear
On Error Resume Next
Dim ret,strFilterName,choose,objArgs
choose =0
Set objArgs = WScript.Arguments
If objArgs.Count >0 Then
choose = CInt(objArgs(0))
wscript.echo choose
End If
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
If choose<=2 And choose >=1 Then
WshShell.Run "iisreset /stop" , 0, True
wscript.echo "stop"
ElseIf choose<=4 And choose >=3 Then
ChangeRight("D:/WebHostingAdmin/MyFilter.dll")
End If
ret = True
Select Case True
Case choose = 1 : ret =SetNewFilter :wscript.echo "set my filter"
Case choose = 2 : ret =ReSetFilter :wscript.echo "reset"
Case choose = 3 : ret =AddFilter("MyFilter") :wscript.echo "add filter"
Case choose = 4 : ret =DelFilter("MyFilter") :wscript.echo "del filter"
Case Else : wscript.echo "error input"
End Select
If choose<=2 And choose >=1 Then
ChangeRight("D:/WebHostingAdmin/MyFilter.dll")
WshShell.Run "iisreset /start" , 0, True
wscript.echo "start"
End If
Set WshShell=Nothing
Function SetNewFilter
Err.clear
On Error Resume Next
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
If IsObject(fso)<>True Then
wscript.echo "CreateObject error"
End If
fso.MoveFile "D:/WebHostingAdmin/MyFilter.dll" , "D:/WebHostingAdmin/MyFilter_bak.dll"
If Err.number <>0 Then
wscript.echo "MoveFile error"
else
wscript.echo "MoveFile"
End if
fso.MoveFile "D:/WebHostingAdmin/MyFilter_new.dll", "D:/WebHostingAdmin/MyFilter.dll"
If Err.number <>0 Then
wscript.echo "copy error"
Else
wscript.echo "copy"
End If
Set fso=Nothing
SetNewFilter = true
End Function
Function ReSetFilter
Err.clear
On Error Resume Next
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
If IsObject(fso)<>True Then
wscript.echo "CreateObject error"
End If
fso.MoveFile "D:/WebHostingAdmin/MyFilter.dll" , "D:/WebHostingAdmin/MyFilter_new.dll"
If Err.number <>0 Then
wscript.echo "MoveFile error"
else
wscript.echo "MoveFile"
End if
fso.MoveFile "D:/WebHostingAdmin/MyFilter_bak.dll" , "D:/WebHostingAdmin/MyFilter.dll"
If Err.number <>0 Then
wscript.echo "MoveFile error"
else
wscript.echo "MoveFile"
End if
Set fso=Nothing
ReSetFilter = true
End Function
'修改文件权限
Function ChangeRight(fldr )
Err.clear
On Error Resume Next
'修改文件权限
Dim ret, acls,WshShell
acls = "cmd /c echo y| cacls " & fldr & " /t /g Administrators:F Everyone:R"
set WshShell = CreateObject("WScript.Shell")
ChangeRight= Wshshell.run (acls, 0, True)
set WshShell = Nothing
wscript.echo "ChangeRight end"
end Function
Function AddFilter( ByVal strFilterName)
Dim objFilters,objAddFilter
Dim strLoadOrder
Dim strDelName
Dim intStartFilt
Err.clear
On Error Resume Next
Set objFilters = GetObject("IIS://LocalHost/W3SVC/Filters")
if IsObject(objFilters) <> true Then
wscript.echo "GetObject Filters"
AddFilter =false
End if
strLoadOrder = objFilters.FilterLoadOrder
wscript.echo strLoadOrder
wscript.echo "create IIsFilter start"
Set objAddFilter = objFilters.Create( "IIsFilter", strFilterName )
if IsObject(objAddFilter) <> true Then
wscript.echo "create IIsFilter error"
AddFilter =false
End If
wscript.echo "create IIsFilter end"
objAddFilter.FilterPath = "D:/WebHostingAdmin/MyFilter.dll"
objAddFilter.FilterDescription = "MyFilter Filter"
'objAddFilter.NotifySecurePort = True
'objAddFilter.NotifyNonSecurePort = True
'objAddFilter.NotifyLog = True
'objAddFilter.NotifyEndOfNetSession = true
objAddFilter.NotifyOrderLow = True
objAddFilter.setinfo
objFilters.setinfo
wscript.echo "set property end"
If strLoadOrder <> "" Then
If Right(strLoadOrder, 1) <> "," Then
strLoadOrder = strLoadOrder & ","
End If
End If
strLoadOrder = strLoadOrder & strFilterName
wscript.echo strLoadOrder
objFilters.FilterLoadOrder= strLoadOrder
objFilters.SetInfo
wscript.echo "set order end"
Set objFilters = Nothing
Set objAddFilter = Nothing
'reset iis
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "iisreset /noforce" , 0, True
Set WshShell = Nothing
End Function
Function DelFilter ( ByVal strFilterName)
Dim objFilterProps, objFilters
Dim strLoadOrder
Dim intStartFilt
Err.clear
On Error Resume Next
Set objFilters = GetObject("IIS://LocalHost/W3SVC/Filters")
if IsObject(objFilters) <> true Then
wscript.echo "GetObject Filters"
AddFilter =false
End If
strLoadOrder = objFilters.FilterLoadOrder
wscript.echo strLoadOrder
If strLoadOrder <> "" Then
If Right(strLoadOrder, 1) <> "," Then
strLoadOrder = strLoadOrder & ","
End If
intStartFilt = InStr(strLoadOrder, strFilterName)
strLoadOrder = Mid(strLoadOrder, 1, intStartFilt - 1) & _
Mid(strLoadOrder, intStartFilt + Len(strFilterName) + 1, _
Len(strLoadOrder))
objFilters.FilterLoadOrder= strLoadOrder
objFilters.SetInfo
objFilters.Delete "IIsFilter", strFilterName
wscript.echo "del filter end"
objFilters.SetInfo
End If
wscript.echo strLoadOrder
wscript.echo "set order end"
Set objFilters = Nothing
'reset iis
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "iisreset /noforce" , 0, True
wscript.echo "restart"
Set WshShell = Nothing
End Function