mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
4.2 KiB
163 lines
4.2 KiB
'------------------------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
' Usage: chaccess <--ADSPath|-a relative config store path>
|
|
' [--computer|-c COMPUTER1[,COMPUTER2...]]
|
|
' [+read|-read]
|
|
' [+write|-write]
|
|
' [+script|-script]
|
|
' [+execute|-execute]
|
|
' [+browse|-browse]
|
|
' [--verbose|-v]
|
|
' [--help|-?]
|
|
'
|
|
' ADSPATH The ADSI Path of the virtual root in question
|
|
'
|
|
' Example 1: chaccess -a w3svc/1/ROOT +read -write +script +browse
|
|
'------------------------------------------------------------------------------------------------
|
|
|
|
|
|
' Force explicit declaration of all variables
|
|
Option Explicit
|
|
|
|
On Error Resume Next
|
|
|
|
Const Error_NoNode = "Unable to open specified node."
|
|
|
|
Dim oArgs, ArgNum, verbose, propNum, ArgPath
|
|
Dim ArgComputers
|
|
Dim prop(15,2)
|
|
|
|
verbose = false
|
|
propNum = 0
|
|
ArgNum = 0
|
|
ArgPath = ""
|
|
ArgComputers = Array("LocalHost")
|
|
|
|
Set oArgs = WScript.Arguments
|
|
While ArgNum < oArgs.Count
|
|
Select Case LCase(oArgs(ArgNum))
|
|
Case "--adspath", "-a":
|
|
ArgNum = ArgNum + 1
|
|
ArgPath = oArgs(ArgNum)
|
|
Case "--computer","-c":
|
|
ArgNum = ArgNum + 1
|
|
ArgComputers = Split(oArgs(ArgNum), ",", -1)
|
|
Case "--verbose", "-v":
|
|
verbose = true
|
|
Case "-read":
|
|
prop(propNum,0) = "AccessRead"
|
|
prop(propNum,1) = false
|
|
propNum = propNum + 1
|
|
Case "+read":
|
|
prop(propNum,0) = "AccessRead"
|
|
prop(propNum,1) = true
|
|
propNum = propNum + 1
|
|
Case "-write":
|
|
prop(propNum, 0) = "AccessWrite"
|
|
prop(propNum, 1) = false
|
|
propNum = propNum + 1
|
|
Case "+write":
|
|
prop(propNum, 0) = "AccessWrite"
|
|
prop(propNum, 1) = true
|
|
propNum = propNum + 1
|
|
Case "-script":
|
|
prop(propNum, 0) = "AccessScript"
|
|
prop(propNum, 1) = false
|
|
propNum = propNum + 1
|
|
Case "+script":
|
|
prop(propNum, 0) = "AccessScript"
|
|
prop(propNum, 1) = true
|
|
propNum = propNum + 1
|
|
Case "-execute":
|
|
prop(propNum, 0) = "AccessExecute"
|
|
prop(propNum, 1) = false
|
|
propNum = propNum + 1
|
|
Case "+execute":
|
|
prop(propNum, 0) = "AccessExecute"
|
|
prop(propNum, 1) = true
|
|
propNum = propNum + 1
|
|
Case "-browse":
|
|
prop(propNum, 0) = "EnableDirBrowsing"
|
|
prop(propNum, 1) = false
|
|
propNum = propNum + 1
|
|
Case "+browse":
|
|
prop(propNum, 0) = "EnableDirBrowsing"
|
|
prop(propNum, 1) = true
|
|
propNum = propNum + 1
|
|
Case "--help","-?":
|
|
Call DisplayUsage
|
|
Case Else:
|
|
Call DisplayUsage
|
|
End Select
|
|
ArgNum = ArgNum + 1
|
|
Wend
|
|
|
|
If (ArgPath="") Then
|
|
Call DisplayUsage
|
|
End If
|
|
|
|
|
|
Dim compIndex
|
|
for compIndex = 0 to UBound(ArgComputers)
|
|
Call ASTSetPerms(ArgComputers(compIndex), ArgPath, prop, propNum)
|
|
next
|
|
|
|
Sub ASTSetPerms(Computer, Path, propList, propCount)
|
|
On Error Resume Next
|
|
Dim oAdmin
|
|
Dim fullPath
|
|
fullPath = "IIS://"&Computer&"/"&Path
|
|
Trace "Opening path " & fullPath
|
|
Set oAdmin = GetObject(fullPath)
|
|
If Err.Number <> 0 Then
|
|
Display Error_NoNode
|
|
WScript.Quit (1)
|
|
End If
|
|
|
|
Dim name, val
|
|
if propCount > 0 then
|
|
Dim i
|
|
|
|
for i = 0 to propCount-1
|
|
name = propList(i,0)
|
|
val = propList(i,1)
|
|
if verbose = true then
|
|
Trace "Setting "&fullPath&"/"&name&" = "& val
|
|
end if
|
|
oAdmin.Put name, (val)
|
|
If Err <> 0 Then
|
|
Display "Unable to set property "&name
|
|
End If
|
|
next
|
|
oAdmin.SetInfo
|
|
If Err <> 0 Then
|
|
Display "Unable to save updated information."
|
|
End If
|
|
end if
|
|
End Sub
|
|
|
|
Sub Display(Msg)
|
|
WScript.Echo Now & ". Error Code: " & Hex(Err) & " - " & Msg
|
|
End Sub
|
|
|
|
Sub Trace(Msg)
|
|
if verbose = true then
|
|
WScript.Echo Now & " : " & Msg
|
|
end if
|
|
End Sub
|
|
|
|
Sub DisplayUsage
|
|
WScript.Echo "Usage: chaccess <--ADSPath|-a ADSPATH>"
|
|
WScript.Echo " [--computer|-c COMPUTER1[,COMPUTER2...]]"
|
|
WScript.Echo " [+read|-read]"
|
|
WScript.Echo " [+write|-write]"
|
|
WScript.Echo " [+script|-script]"
|
|
WScript.Echo " [+execute|-execute]"
|
|
WScript.Echo " [+browse|-browse]"
|
|
WScript.Echo " [--verbose|-v]"
|
|
WScript.Echo " [--help|-?]"
|
|
WScript.Echo "Example 1: chaccess -a w3svc/1/ROOT +read -write +script +browse"
|
|
WScript.Echo "Example 2: chaccess -c MACHINE1,MACHINE2,MACHINE3 -a w3svc/1/ROOT +read -write +script +browse"
|
|
WScript.Quit (1)
|
|
End Sub
|