home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 February / CHIP_2_98.iso / software / pelne / optionp / iis4_07.cab / chaccess.vbs < prev    next >
Text File  |  1997-10-25  |  4KB  |  164 lines

  1. '------------------------------------------------------------------------------------------------
  2. '
  3. '
  4. ' Usage: chaccess <--ADSPath|-a relative config store path>
  5. '                          [--computer|-c COMPUTER1[,COMPUTER2...]]
  6. '                          [+read|-read]
  7. '                          [+write|-write]
  8. '                          [+script|-script]
  9. '                          [+execute|-execute]
  10. '                          [+browse|-browse]
  11. '                           [--verbose|-v]
  12. '                          [--help|-?]
  13. '
  14. ' ADSPATH               The ADSI Path of the virtual root in question
  15. '
  16. ' Example 1: chaccess -a w3svc/1/ROOT +read -write +script +browse
  17. '------------------------------------------------------------------------------------------------
  18.  
  19.  
  20. ' Force explicit declaration of all variables
  21. Option Explicit
  22.  
  23. On Error Resume Next
  24.  
  25. Const Error_NoNode = "Unable to open specified node."
  26.  
  27. Dim oArgs, ArgNum, verbose, propNum, ArgPath
  28. Dim ArgComputers
  29. Dim prop(15,2)
  30.  
  31. verbose = false
  32. propNum = 0
  33. ArgNum = 0
  34. ArgPath = ""
  35. ArgComputers = Array("LocalHost")
  36.  
  37. Set oArgs = WScript.Arguments
  38. While ArgNum < oArgs.Count
  39.     Select Case LCase(oArgs(ArgNum))
  40.         Case "--adspath", "-a":
  41.             ArgNum = ArgNum + 1
  42.             ArgPath = oArgs(ArgNum)    
  43.         Case "--computer","-c":
  44.             ArgNum = ArgNum + 1
  45.             ArgComputers = Split(oArgs(ArgNum), ",", -1)
  46.         Case "--verbose", "-v":
  47.             verbose = true
  48.         Case "-read":
  49.             prop(propNum,0) = "AccessRead"
  50.             prop(propNum,1) = false
  51.             propNum = propNum + 1
  52.         Case "+read":
  53.             prop(propNum,0) = "AccessRead"
  54.             prop(propNum,1) = true
  55.             propNum = propNum + 1
  56.         Case "-write":
  57.             prop(propNum, 0) = "AccessWrite"
  58.             prop(propNum, 1) = false
  59.             propNum = propNum + 1
  60.         Case "+write":
  61.             prop(propNum, 0) = "AccessWrite"
  62.             prop(propNum, 1) = true
  63.             propNum = propNum + 1
  64.         Case "-script":
  65.             prop(propNum, 0) = "AccessScript"
  66.             prop(propNum, 1) = false
  67.             propNum = propNum + 1
  68.         Case "+script":
  69.             prop(propNum, 0) = "AccessScript"
  70.             prop(propNum, 1) = false
  71.             propNum = propNum + 1
  72.         Case "-execute":
  73.             prop(propNum, 0) = "AccessExecute"
  74.             prop(propNum, 1) = false
  75.             propNum = propNum + 1
  76.         Case "+execute":
  77.             prop(propNum, 0) = "AccessExecute"
  78.             prop(propNum, 1) = true
  79.             propNum = propNum + 1
  80.         Case "-browse":
  81.             prop(propNum, 0) = "EnableDirBrowsing"
  82.             prop(propNum, 1) = false
  83.             propNum = propNum + 1
  84.         Case "+browse":
  85.             prop(propNum, 0) = "EnableDirBrowsing"
  86.             prop(propNum, 1) = true
  87.             propNum = propNum + 1
  88.         Case "--help","-?":
  89.             Call DisplayUsage
  90.         Case Else:
  91.             Call DisplayUsage
  92.     End Select    
  93.     ArgNum = ArgNum + 1
  94. Wend
  95.  
  96. If (ArgPath="") Then
  97.     Call DisplayUsage
  98. End If
  99.  
  100.  
  101. Dim compIndex
  102. for compIndex = 0 to UBound(ArgComputers)
  103.     Call ASTSetPerms(ArgComputers(compIndex), ArgPath, prop, propNum)
  104. next
  105.  
  106. Sub ASTSetPerms(Computer, Path, propList, propCount)
  107.     On Error Resume Next
  108.     Dim oAdmin
  109.     Dim fullPath
  110.     fullPath = "IIS://"&Computer&"/"&Path
  111.     Trace "Opening path " & fullPath
  112.     Set oAdmin = GetObject(fullPath)
  113.     If Err.Number <> 0 Then
  114.         Display Error_NoNode
  115.         WScript.Quit (1)
  116.     End If
  117.     
  118.     Dim name, val
  119.     if propCount > 0 then
  120.         Dim i
  121.  
  122.         for i = 0 to propCount-1
  123.             name = propList(i,0)
  124.             val = propList(i,1)
  125.             if verbose = true then
  126.                 Trace "Setting "&fullPath&"/"&name&" = "& val
  127.             end if
  128.             oAdmin.Put name, (val)
  129.             If Err <> 0 Then
  130.                 Display "Unable to set property "&name
  131.             End If
  132.         next
  133.         oAdmin.SetInfo
  134.         If Err <> 0 Then
  135.             Display "Unable to save updated information."
  136.         End If
  137.     end if
  138. End Sub
  139.  
  140. Sub Display(Msg)
  141.     WScript.Echo Now & ". Error Code: " & Hex(Err) & " - " & Msg
  142. End Sub
  143.  
  144. Sub Trace(Msg)
  145.     if verbose = true then
  146.         WScript.Echo Now & " : " & Msg    
  147.     end if
  148. End Sub
  149.  
  150. Sub DisplayUsage
  151.     WScript.Echo "Usage: chaccess <--ADSPath|-a ADSPATH>"
  152.     WScript.Echo "                [--computer|-c COMPUTER1[,COMPUTER2...]]"
  153.     WScript.Echo "                [+read|-read]"
  154.     WScript.Echo "                [+write|-write]"
  155.     WScript.Echo "                [+script|-script]"
  156.     WScript.Echo "                [+execute|-execute]"
  157.     WScript.Echo "                [+browse|-browse]"
  158.     WScript.Echo "                [--verbose|-v]"
  159.     WScript.Echo "                [--help|-?]"
  160.     WScript.Echo "Example 1: chaccess -a w3svc/1/ROOT +read -write +script +browse"
  161.     WScript.Echo "Example 2: chaccess -c MACHINE1,MACHINE2,MACHINE3 -a w3svc/1/ROOT +read -write +script +browse"
  162. WScript.Quit (1)
  163. End Sub
  164.