home *** CD-ROM | disk | FTP | other *** search
- '------------------------------------------------------------------------------------------------
- '
- ' Search the tree of administrative nodes based on the command-line arguments.
- '
- '
- ' Usage: ASTFind [--ADSPath|-r ROOT NODE]
- ' <--search|-s SEARCH STRING>
- ' [--field|-f FIELD]
- ' [--class|-c CLASS]
- ' [--help|-?]
- '
- '------------------------------------------------------------------------------------------------
-
- 'Force explicit declaration of all variables
- Option Explicit
-
- Dim ArgNum, oArgs, ArgRoot, ArgString, ArgField, ArgClass
-
- Set oArgs = WScript.Arguments
-
- Dim ObjCount, FoundObj
-
- ArgRoot = ""
- ArgString = ""
- ArgField = ""
- ArgClass = ""
-
- ArgNum = 0
- While ArgNum < oArgs.Count
- Select Case LCase(oArgs(ArgNum))
- Case "--adspath","-a":
- ArgNum = ArgNum + 1
- ArgRoot = oArgs(ArgNum)
- Case "--search","-s":
- ArgNum = ArgNum + 1
- ArgString = oArgs(ArgNum)
- Case "--field","-f":
- ArgNum = ArgNum + 1
- ArgField = oArgs(ArgNum)
- Case "--class","-c":
- ArgNum = ArgNum + 1
- ArgClass = oArgs(ArgNum)
- Case "--help","-?":
- Call DisplayUsage
- Case Else:
- Call DisplayUsage
- End Select
-
- ArgNum = ArgNum + 1
- Wend
-
- If ArgString = "" Then
- Call DisplayUsage
- End If
-
- Call ASTFind(ArgString, ArgRoot, ArgField, ArgClass)
-
- Sub FindInSubTree(SourceObj,SearchStr,FieldToCheck,Class)
- Dim Obj
-
- If Class = "" Then
- If FieldToCheck = "" Then
- If (SourceObj.Class = "IIsWebServer") Or (SourceObj.Class = "IIsFtpServer") Then
- If SourceObj.ServerComment = SearchStr Then
- Set FoundObj = SourceObj
- ObjCount = ObjCount + 1
- End If
- Else
- If SourceObj.Name = SearchStr Then
- Set FoundObj = SourceObj
- ObjCount = ObjCount + 1
- End If
- End If
- Else
- If SourceObj.Get(FieldToCheck) = SearchStr Then
- Set FoundObj = SourceObj
- ObjCount = ObjCount + 1
- End If
- End If
- Else
- If FieldToCheck = "" Then
- If (SourceObj.Class = Class) Then
- If (SourceObj.Class = "IIsWebServer") Or (SourceObj.Class = "IIsFtpServer") Then
- If SourceObj.ServerComment = SearchStr Then
- Set FoundObj = SourceObj
- ObjCount = ObjCount + 1
- End If
- Else
- If SourceObj.Name = SearchStr Then
- Set FoundObj = SourceObj
- ObjCount = ObjCount + 1
- End If
- End If
- End If
- Else
- If (SourceObj.Class = Class) Then
- If (SourceObj.Get(FieldToCheck) = SearchStr) Then
- Set FoundObj = SourceObj
- ObjCount = ObjCount + 1
- End If
- End If
- End If
- End If
-
- If (Err <> 0) Then
- Display "TERMINATING ASTFind --- Error searching for " & SearchStr & ". May be invalid arguments."
- WScript.Quit 8161977
- End If
-
- For Each Obj in SourceObj
- Call FindInSubTree(Obj,SearchStr,FieldToCheck,Class)
- Next
-
- End Sub
-
- Sub DisplayObjectDetails(Obj)
- wscript.echo ""
- wscript.echo "Name: " & Obj.Name
- wscript.echo "Class: " & Obj.Class
- wscript.echo "Schema: " & Obj.Schema
- wscript.echo "GUID: " & Obj.GUID
- wscript.echo "Parent: " & Obj.Parent
- wscript.echo
-
- if (Obj.Class = "IIsComputer") Then
- wscript.echo "Memory Cache Size: " & Obj.MemoryCacheSize
- wscript.echo "Max Bandwidth: " & Obj.MaxBandWidth
- End If
- If (Obj.Class = "IIsWebService") Then
- ' wscript.echo "Secure Port: " & Obj.SecurePort
- wscript.echo "Directory Browsing: " & Obj.EnableDirBrowsing
- wscript.echo "Default Document: " & Obj.DefaultDoc
- wscript.echo "Script Access: " & Obj.AccessScript
- wscript.echo "Execute Access: " & Obj.AccessExecute
- End If
- If (Obj.Class = "IIsFtpService") Then
- wscript.echo "Enable Port Attack: " & Obj.EnablePortAttack
- wscript.echo "Lower Case Files: " & Obj.LowerCaseFiles
- End If
- If (Obj.Class = "IIsWebServer") Then
- wscript.echo "State:" & ServerState(Obj.ServerState)
- wscript.echo "1st Binding: " & Obj.ServerBindings(0)(0)
- wscript.echo "State: " & ServerState(Obj.ServerState)
- End If
- If (Obj.Class = "IIsFTPServer") Then
- wscript.echo "State:" & ServerState(Obj.ServerState)
- wscript.echo "Greeting Message: " & Obj.GreetingMessage
- wscript.echo "Exit Message: " & Obj.ExitMessage
- wscript.echo "Max Clients Message: " & Obj.MaxClientsMessage
- wscript.echo "Anonymous Only: " & Obj.AnonymousOnly
- End If
- If (Obj.Class = "IIsWebVirtualDir") Then
- wscript.echo "Path: " & Obj.path
- wscript.echo "Default document: " & Obj.DefaultDoc
- wscript.echo "UNC User Name: " & Obj.UNCUserName
- wscript.echo "Directory browsing is " & CStr(CBool(Obj.EnableDirBrowsing))
- wscript.echo "Read Access is " & CStr(CBool(Obj.AccessRead))
- wscript.echo "Write Access is " & CStr(CBool(Obj.AccessWrite))
- End If
- If (Obj.Class ="IIsFTPVirtualDir") Then
- wscript.echo "Path: " & Obj.path
- wscript.echo "UNC User Name: " & Obj.UNCUserName
- wscript.echo "Read Access is " & CStr(CBool(Obj.AccessRead))
- wscript.echo "Write Access is " & CStr(CBool(Obj.AccessWrite))
- End If
- if (Obj.Class = "IIsWebService") or (Obj.Class = "IIsFTPService") or (Obj.Class = "IIsWebServer") or (Obj.Class = "IIsFTPServer") Then
- wscript.echo "Server Comment: " & Obj.ServerComment
- wscript.echo "AnonymousUserName: " & Obj.AnonymousUserName
- wscript.echo "Default Logon Domain: " & Obj.DefaultLogonDomain
- wscript.echo "Max Connections: " & Obj.MaxConnections
- wscript.echo "Connection Timeout: " & Obj.ConnectionTimeout
- wscript.echo "Read Access: " & Obj.AccessRead
- wscript.echo "Write Access: " & Obj.AccessWrite
- wscript.echo "Log: " & Not Obj.DontLog
- End If
- End Sub
-
- Sub ASTFind(SearchStr,StartingPath,FieldToCheck,Class)
- On Error Resume Next
- Display "STARTING ASTFind --- Searching for object " & SearchStr & "..."
-
- Dim SourceObj
-
- If StartingPath = "" Then
- StartingPath = "IIS://"
- End If
-
- 'Create and object for the Web service
- Set SourceObj = GetObject(StartingPath)
- If (Err <> 0) Then
- Display "TERMINATING ASTFind --- Error accessing " & StartingPath & "."
- Exit Sub
- End If
-
- ObjCount = 0
-
- 'Search for the object
- Call FindInSubTree(SourceObj,SearchStr,FieldToCheck,Class)
-
- Select Case ObjCount
- Case 0
- Display "COMPLETED ASTFind --- Object " & SearchStr & " was not found."
- Exit Sub
- Case 1
- Display "COMPLETED ASTFind --- Object " & SearchStr & " was found. Path:" & FoundObj.ADsPath
- DisplayObjectDetails(FoundObj)
- Exit Sub
- Case Else
- Display "COMPLETED ASTFind --- Multiple objects match specified criteria. Try narrowing search."
- Exit Sub
- End Select
- End Sub
-
- '---------------------------------------------------------------------------------
-
- Function Display(Msg)
- WScript.Echo Now & ". Error Code: " & Err & " --- " & Msg
- End Function
-
- '---------------------------------------------------------------------------------
-
- ' Display the usage message
- Sub DisplayUsage
- WScript.Echo "Usage: ASTFind [--ADSPath|-r ROOT NODE]"
- WScript.Echo " <--search|-s SEARCH STRING>"
- WScript.Echo " [--field|-f FIELD]"
- WScript.Echo " [--class|-c CLASS]"
- WScript.Echo " [--help|-?]"
- WScript.Quit (1)
- End Sub
-
-