90 lines
2.4 KiB
Plaintext
90 lines
2.4 KiB
Plaintext
|
'------------------------------------------------------------------------------------------------
|
||
|
'
|
||
|
' Print the tree of administration objects starting either at the specified node or the root
|
||
|
' node of the local machine.
|
||
|
'
|
||
|
' Usage: disptree [--ADSPath|-a ROOT NODE]
|
||
|
' [--NoRecurse|-n]
|
||
|
' [--help|-?]
|
||
|
'
|
||
|
' ROOT NODE Optional argument specifies the ADSI path of the first node of the tree
|
||
|
' No Recurse Specifying this keeps the script from recursing through the tree
|
||
|
'
|
||
|
' Example 1: disptree
|
||
|
' Example 2: disptree -a IIS://LocalHost/w3svc --NoRecurse
|
||
|
'------------------------------------------------------------------------------------------------
|
||
|
|
||
|
' Force declaration of variables.
|
||
|
Option Explicit
|
||
|
|
||
|
On Error Resume Next
|
||
|
|
||
|
Dim oFirstNode, Recurse, CurrentObj, RootNodePath
|
||
|
|
||
|
' By default, we recurse.
|
||
|
Recurse = True
|
||
|
|
||
|
' Set the default path
|
||
|
RootNodePath = "IIS://LocalHost"
|
||
|
|
||
|
Dim oArgs, ArgNum
|
||
|
Set oArgs = WScript.Arguments
|
||
|
ArgNum = 0
|
||
|
While ArgNum < oArgs.Count
|
||
|
|
||
|
Select Case LCase(oArgs(ArgNum))
|
||
|
Case "--adspath","-a":
|
||
|
ArgNum = ArgNum + 1
|
||
|
RootNodePath = oArgs(ArgNum)
|
||
|
Case "--norecurse","-n":
|
||
|
Recurse = false
|
||
|
Case "--help","-?":
|
||
|
Call DisplayUsage
|
||
|
Case Else:
|
||
|
Call DisplayUsage
|
||
|
End Select
|
||
|
|
||
|
ArgNum = ArgNum + 1
|
||
|
Wend
|
||
|
|
||
|
Set oFirstNode = GetObject(RootNodePath)
|
||
|
|
||
|
If Err <> 0 Then
|
||
|
Display "Couldn't get the first node!"
|
||
|
WScript.Quit (1)
|
||
|
End If
|
||
|
|
||
|
' Begin displaying tree
|
||
|
Call DisplayTree(oFirstNode, 0)
|
||
|
|
||
|
' This is the sub that will do the actual recursion
|
||
|
Sub DisplayTree(FirstObj, Level)
|
||
|
If (FirstObj.Class = "IIsWebServer") Or (FirstObj.Class = "IIsFtpServer") Then
|
||
|
WScript.Echo Space(Level*2) & FirstObj.Name & " - " & FirstObj.ServerComment & " (" & FirstObj.Class & ")"
|
||
|
Else
|
||
|
WScript.Echo Space(Level*2) & FirstObj.Name & " (" & FirstObj.Class & ")"
|
||
|
End If
|
||
|
|
||
|
' Only recurse if so specified.
|
||
|
If (Level = 0) or (Recurse) then
|
||
|
For Each CurrentObj in FirstObj
|
||
|
Call DisplayTree(CurrentObj, Level + 1)
|
||
|
Next
|
||
|
End If
|
||
|
End Sub
|
||
|
|
||
|
' Display the usage for this script
|
||
|
Sub DisplayUsage
|
||
|
WScript.Echo "Usage: disptree [--ADSPath|-a ROOT NODE]"
|
||
|
WScript.Echo " [--NoRecurse|-n]"
|
||
|
WScript.Echo " [--Help|-?]"
|
||
|
WScript.Echo ""
|
||
|
WScript.Echo " Example 1: disptree"
|
||
|
WScript.Echo " Example 2: disptree -a IIS://LocalHost/w3svc --NoRecurse"
|
||
|
WSCript.Quit
|
||
|
End Sub
|
||
|
|
||
|
Sub Display(Msg)
|
||
|
WScript.Echo Now & ". Error Code: " & Err & " --- " & Msg
|
||
|
End Sub
|