Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. PTION EXPLICIT
  2.  
  3. DIM CRLF, TAB
  4. DIM strServer
  5. DIM objWebService
  6. DIM WebSvcObj
  7.  
  8. dim webID
  9. dim DllName
  10. dim strScriptMap
  11. dim objVDir
  12. dim arrScriptMaps
  13. dim arrScriptMapsTmp
  14. dim ISAPIlist
  15. dim bAdd
  16. dim bRemove
  17. dim i
  18. dim j
  19. dim cc
  20.  
  21. TAB  = CHR( 9 )
  22. CRLF = CHR( 13 ) & CHR( 10 )
  23. ISAPIlist = 0
  24. bAdd = 0
  25. bRemove = 0
  26. cc = 0
  27.  
  28. If Wscript.Arguments.Count < 2 Then
  29.     If Wscript.Arguments.Count = 0 Then
  30.         Wscript.Echo "cscript isn.vbs /add <Path\FileName> - add to all web sites"
  31.         Wscript.Echo "cscript isn.vbs /remove <FileName> - remove from all web sites"
  32.         Wscript.Echo "cscript isn.vbs /isapilist <ID> - list ISAPI for web site <ID>"
  33.         Wscript.Echo "cscript isn.vbs /weblist - list web sites"
  34.         Wscript.Echo "Example:"
  35.         Wscript.Echo "cscript isn.vbs /add C:\WINDOWS\isn\isn.dll"
  36.         Wscript.Echo "cscript isn.vbs /remove isn.dll"
  37.         Wscript.Quit
  38.     Else
  39.         If Wscript.Arguments(0)="/weblist" Then
  40.         'list web sites id and names
  41.         SET objWebService = GetObject( "IIS://localhost/W3SVC" )
  42.         EnumWebsites(objWebService)
  43.         Wscript.Quit
  44.         Else
  45.         Wscript.Echo "wrong param"
  46.         Wscript.Quit
  47.         End If
  48.     End If
  49. Else
  50.  If Wscript.Arguments(0)="/isapilist" Then
  51.     webID = Wscript.Arguments(1)
  52.     ISAPIlist = 1
  53.  ElseIf Wscript.Arguments(0)="/add" Then
  54.     bAdd = 1
  55.     DllName = Wscript.Arguments(1)
  56.  ElseIf Wscript.Arguments(0)="/remove" Then
  57.     bRemove = 1
  58.     DllName = Wscript.Arguments(1)
  59.  End If
  60. End If
  61.  
  62. If ( (bAdd=0) And (bRemove=0) And (ISAPIlist=0) ) Then
  63.         Wscript.Echo "Wrong params!"
  64.         Wscript.Quit
  65. End If
  66.  
  67. If bAdd=1 Then
  68. SET objWebService = GetObject( "IIS://localhost/W3SVC" )
  69. strScriptMap = "*,"+DllName+",4,All"
  70. AddToWebsites(objWebService)
  71. Set WebSvcObj = GetObject("IIS://LocalHost/W3SVC")
  72. WebSvcObj.EnableExtensionFile("*.dll")
  73. WebSvcObj.SetInfo
  74. End If
  75.  
  76. If bRemove=1 Then
  77. SET objWebService = GetObject( "IIS://localhost/W3SVC" )
  78. RemoveFromWebsites(objWebService)
  79. Set WebSvcObj = GetObject("IIS://LocalHost/W3SVC")
  80. WebSvcObj.DisableExtensionFile("*.dll")
  81. WebSvcObj.SetInfo
  82. Wscript.Echo DllName + " deleted"
  83. End If
  84.  
  85. If ISAPIlist=1 Then
  86. Set objVDir = GetObject("IIS://LocalHost/W3SVC/"+webID+"/Root")
  87. arrScriptMaps = objVDir.Get("ScriptMaps")
  88. For i = LBound(arrScriptMaps) to UBound(arrScriptMaps)
  89. Wscript.Echo arrScriptMaps(i)
  90. Next
  91. Wscript.Quit
  92. End If
  93.  
  94. FUNCTION AddToWebsites( objWebService )
  95.     DIM objWebServer, strBindings
  96.  
  97.     FOR EACH objWebServer IN objWebService
  98.         IF objWebserver.Class = "IIsWebServer" THEN
  99.     Set objVDir = GetObject("IIS://LocalHost/W3SVC/"+objWebserver.Name+"/Root")
  100.     arrScriptMaps = objVDir.Get("ScriptMaps")
  101.     arrScriptMapsTmp = arrScriptMaps
  102.     ReDim Preserve arrScriptMaps(UBound(arrScriptMaps) + 1)
  103.     j = LBound(arrScriptMaps)
  104.     arrScriptMaps(j) = strScriptMap
  105.     j = 0
  106.    
  107.     For i = 1 to UBound(arrScriptMaps)
  108.         arrScriptMaps(i)=arrScriptMapsTmp(j)
  109.         j = j+1
  110.     Next
  111.    
  112.     objVDir.Put "ScriptMaps", arrScriptMaps
  113.     objVDir.SetInfo
  114.    
  115.     Wscript.Echo "Add "+DllName+" to Web Site ID "+objWebserver.Name+" success!"
  116.         END IF
  117.     NEXT
  118.  
  119. END FUNCTION
  120.  
  121. FUNCTION RemoveFromWebsites( objWebService )
  122.     DIM objWebServer, strBindings
  123.  
  124.     FOR EACH objWebServer IN objWebService
  125.         IF objWebserver.Class = "IIsWebServer" THEN
  126.        
  127.         Do
  128.         Set objVDir = GetObject("IIS://LocalHost/W3SVC/"+objWebserver.Name+"/Root")
  129.    
  130.         arrScriptMaps = objVDir.Get("ScriptMaps")
  131.         arrScriptMapsTmp = arrScriptMaps
  132.         cc=0
  133.        
  134.         For i = LBound(arrScriptMapsTmp) to UBound(arrScriptMapsTmp)
  135.             If InStr(arrScriptMapsTmp(i), DllName)>0 then
  136.                 arrScriptMapsTmp(i) = ""
  137.                 cc=cc+1
  138.                 Wscript.Echo "Found "+DllName+" in "+objWebserver.Name+", delete"
  139.                'exit for 'exit loop
  140.             End If
  141.         Next
  142.        
  143.         If cc=0 Then
  144.             Wscript.Echo DllName+" in "+objWebserver.Name+" NOT found"
  145.             Exit Do
  146.         End If
  147.        
  148.         ReDim Preserve arrScriptMaps(UBound(arrScriptMaps)-cc)
  149.        
  150.         j = LBound(arrScriptMapsTmp)
  151.         for i = LBound(arrScriptMapsTmp) to UBound(arrScriptMapsTmp)
  152.         If arrScriptMapsTmp(i)<>"" Then
  153.             arrScriptMaps(j)=arrScriptMapsTmp(i)
  154.             j = j+1
  155.         End If
  156.         Next
  157.        
  158.         objVDir.Put "ScriptMaps", arrScriptMaps
  159.         objVDir.SetInfo
  160.         Exit Do
  161.     Loop While False
  162.  
  163.         END IF
  164.     NEXT
  165.  
  166. END FUNCTION
  167.  
  168. FUNCTION EnumWebsites( objWebService )
  169.     DIM objWebServer, strBindings
  170.  
  171.     FOR EACH objWebServer IN objWebService
  172.         IF objWebserver.Class = "IIsWebServer" THEN
  173.             WScript.Echo _
  174.                 "Site ID = " & objWebserver.Name & CRLF & _
  175.                 "Comment = """ & objWebServer.ServerComment & """ " & CRLF & _
  176.                 "State   = " & State2Desc( objWebserver.ServerState ) '& CRLF & _
  177.                 '"LogDir  = " & objWebServer.LogFileDirectory & _
  178.                 '""
  179.  
  180.             ' Enumerate the HTTP bindings (ServerBindings) and
  181.            ' SSL bindings (SecureBindings)
  182.            'strBindings = EnumBindings( objWebServer.ServerBindings ) & _
  183.             '              EnumBindings( objWebServer.SecureBindings )
  184.            'IF NOT strBindings = "" THEN
  185.            '    WScript.Echo "IP Address" & TAB & _
  186.             '                 "Port" & TAB & _
  187.             '                 "Host" & CRLF & _
  188.             '                 strBindings
  189.            'END IF
  190.        END IF
  191.     NEXT
  192.  
  193. END FUNCTION
  194.  
  195. FUNCTION EnumBindings( objBindingList )
  196.     DIM i, strIP, strPort, strHost
  197.     DIM reBinding, reMatch, reMatches
  198.     SET reBinding = NEW RegExp
  199.     reBinding.Pattern = "([^:]*):([^:]*):(.*)"
  200.  
  201.     FOR i = LBOUND( objBindingList ) TO UBOUND( objBindingList )
  202.         ' objBindingList( i ) is a string looking like IP:Port:Host
  203.        SET reMatches = reBinding.Execute( objBindingList( i ) )
  204.         FOR EACH reMatch IN reMatches
  205.             strIP = reMatch.SubMatches( 0 )
  206.             strPort = reMatch.SubMatches( 1 )
  207.             strHost = reMatch.SubMatches( 2 )
  208.  
  209.             ' Do some pretty processing
  210.            IF strIP = "" THEN strIP = "All Unassigned"
  211.             IF strHost = "" THEN strHost = "*"
  212.             IF LEN( strIP ) < 8 THEN strIP = strIP & TAB
  213.  
  214.             EnumBindings = EnumBindings & _
  215.                            strIP & TAB & _
  216.                            strPort & TAB & _
  217.                            strHost & TAB & _
  218.                            ""
  219.         NEXT
  220.  
  221.         EnumBindings = EnumBindings & CRLF
  222.     NEXT
  223.  
  224. END FUNCTION
  225.  
  226. FUNCTION State2Desc( nState )
  227.     SELECT CASE nState
  228.     CASE 1
  229.         State2Desc = "Starting (MD_SERVER_STATE_STARTING)"
  230.     CASE 2
  231.         State2Desc = "Started (MD_SERVER_STATE_STARTED)"
  232.     CASE 3
  233.         State2Desc = "Stopping (MD_SERVER_STATE_STOPPING)"
  234.     CASE 4
  235.         State2Desc = "Stopped (MD_SERVER_STATE_STOPPED)"
  236.     CASE 5
  237.         State2Desc = "Pausing (MD_SERVER_STATE_PAUSING)"
  238.     CASE 6
  239.         State2Desc = "Paused (MD_SERVER_STATE_PAUSED)"
  240.     CASE 7
  241.         State2Desc = "Continuing (MD_SERVER_STATE_CONTINUING)"
  242.     CASE ELSE
  243.         State2Desc = "Unknown state"
  244.     END SELECT
  245.  
  246. END FUNCTION