home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 9 / IOPROG_9.ISO / contrib / iis4 / iis4_07.cab / findnode.vbs < prev    next >
Encoding:
Text File  |  1997-08-28  |  7.0 KB  |  232 lines

  1. '------------------------------------------------------------------------------------------------
  2. '
  3. ' Search the tree of administrative nodes based on the command-line arguments.
  4. '
  5. '
  6. ' Usage: ASTFind [--ADSPath|-r ROOT NODE]
  7. '                <--search|-s SEARCH STRING>
  8. '                [--field|-f FIELD]
  9. '                [--class|-c CLASS]
  10. '                [--help|-?]
  11. '
  12. '------------------------------------------------------------------------------------------------
  13.  
  14. 'Force explicit declaration of all variables
  15. Option Explicit
  16.  
  17. Dim ArgNum, oArgs, ArgRoot, ArgString, ArgField, ArgClass
  18.  
  19. Set oArgs = WScript.Arguments
  20.  
  21. Dim ObjCount, FoundObj
  22.  
  23. ArgRoot = ""
  24. ArgString = ""
  25. ArgField = ""
  26. ArgClass = ""
  27.  
  28. ArgNum = 0
  29. While ArgNum < oArgs.Count
  30.     Select Case LCase(oArgs(ArgNum))
  31.         Case "--adspath","-a":
  32.             ArgNum = ArgNum + 1
  33.             ArgRoot = oArgs(ArgNum)    
  34.         Case "--search","-s":
  35.             ArgNum = ArgNum + 1
  36.             ArgString = oArgs(ArgNum)
  37.         Case "--field","-f":
  38.             ArgNum = ArgNum + 1
  39.             ArgField = oArgs(ArgNum)
  40.         Case "--class","-c":
  41.             ArgNum = ArgNum + 1
  42.             ArgClass = oArgs(ArgNum)
  43.         Case "--help","-?":
  44.             Call DisplayUsage
  45.         Case Else:
  46.             Call DisplayUsage
  47.     End Select    
  48.  
  49.     ArgNum = ArgNum + 1
  50. Wend
  51.  
  52. If ArgString = "" Then
  53.     Call DisplayUsage
  54. End If
  55.  
  56. Call ASTFind(ArgString, ArgRoot, ArgField, ArgClass)
  57.  
  58. Sub FindInSubTree(SourceObj,SearchStr,FieldToCheck,Class)
  59.     Dim Obj
  60.  
  61.     If Class = "" Then
  62.         If FieldToCheck = "" Then
  63.             If (SourceObj.Class = "IIsWebServer") Or (SourceObj.Class = "IIsFtpServer") Then
  64.                 If SourceObj.ServerComment = SearchStr Then
  65.                     Set FoundObj = SourceObj
  66.                     ObjCount = ObjCount + 1
  67.                 End If
  68.             Else
  69.                 If SourceObj.Name = SearchStr Then
  70.                     Set FoundObj = SourceObj
  71.                     ObjCount = ObjCount + 1
  72.                 End If
  73.             End If
  74.         Else
  75.             If SourceObj.Get(FieldToCheck) = SearchStr Then
  76.                 Set FoundObj = SourceObj
  77.                 ObjCount = ObjCount + 1
  78.             End If
  79.         End If
  80.     Else
  81.         If FieldToCheck = "" Then
  82.             If (SourceObj.Class = Class) Then
  83.                 If (SourceObj.Class = "IIsWebServer") Or (SourceObj.Class = "IIsFtpServer") Then
  84.                     If SourceObj.ServerComment = SearchStr Then
  85.                         Set FoundObj = SourceObj
  86.                         ObjCount = ObjCount + 1
  87.                     End If
  88.                 Else
  89.                     If SourceObj.Name = SearchStr Then
  90.                         Set FoundObj = SourceObj
  91.                         ObjCount = ObjCount + 1
  92.                     End If
  93.                 End If
  94.             End If
  95.         Else
  96.             If (SourceObj.Class = Class) Then
  97.                 If (SourceObj.Get(FieldToCheck) = SearchStr) Then
  98.                     Set FoundObj = SourceObj
  99.                     ObjCount = ObjCount + 1
  100.                 End If
  101.             End If
  102.         End If
  103.     End If
  104.  
  105.     If (Err <> 0) Then
  106.         Display "TERMINATING ASTFind --- Error searching for " & SearchStr & ".  May be invalid arguments."
  107.         WScript.Quit 8161977 
  108.     End If
  109.  
  110.     For Each Obj in SourceObj
  111.         Call FindInSubTree(Obj,SearchStr,FieldToCheck,Class)
  112.     Next
  113.  
  114. End Sub
  115.  
  116. Sub DisplayObjectDetails(Obj)
  117.     wscript.echo ""
  118.     wscript.echo "Name: " & Obj.Name 
  119.     wscript.echo "Class: " & Obj.Class
  120.     wscript.echo "Schema: " & Obj.Schema
  121.     wscript.echo "GUID: " & Obj.GUID
  122.     wscript.echo "Parent: " & Obj.Parent
  123.     wscript.echo
  124.  
  125.     if (Obj.Class = "IIsComputer") Then 
  126.         wscript.echo "Memory Cache Size: " & Obj.MemoryCacheSize
  127.         wscript.echo "Max Bandwidth: " & Obj.MaxBandWidth
  128.     End If
  129.     If (Obj.Class = "IIsWebService") Then
  130.     '    wscript.echo "Secure Port: " & Obj.SecurePort
  131.         wscript.echo "Directory Browsing: " & Obj.EnableDirBrowsing
  132.         wscript.echo "Default Document: " & Obj.DefaultDoc
  133.         wscript.echo "Script Access: " & Obj.AccessScript
  134.         wscript.echo "Execute Access: " & Obj.AccessExecute
  135.     End If
  136.     If (Obj.Class = "IIsFtpService") Then
  137.         wscript.echo "Enable Port Attack: " & Obj.EnablePortAttack
  138.         wscript.echo "Lower Case Files: " & Obj.LowerCaseFiles
  139.     End If
  140.     If (Obj.Class = "IIsWebServer") Then
  141.         wscript.echo "State:" & ServerState(Obj.ServerState)
  142.         wscript.echo "1st Binding: " & Obj.ServerBindings(0)(0)
  143.         wscript.echo "State: " & ServerState(Obj.ServerState)
  144.     End If
  145.     If (Obj.Class = "IIsFTPServer") Then
  146.         wscript.echo "State:" & ServerState(Obj.ServerState)
  147.         wscript.echo "Greeting Message: " & Obj.GreetingMessage
  148.         wscript.echo "Exit Message: " & Obj.ExitMessage
  149.         wscript.echo "Max Clients Message: " & Obj.MaxClientsMessage
  150.         wscript.echo "Anonymous Only: " & Obj.AnonymousOnly
  151.     End If
  152.     If (Obj.Class = "IIsWebVirtualDir") Then
  153.         wscript.echo "Path: " & Obj.path
  154.         wscript.echo "Default document: " & Obj.DefaultDoc
  155.         wscript.echo "UNC User Name: " & Obj.UNCUserName
  156.         wscript.echo "Directory browsing is " & CStr(CBool(Obj.EnableDirBrowsing))
  157.         wscript.echo "Read Access is " & CStr(CBool(Obj.AccessRead))
  158.         wscript.echo "Write Access is " & CStr(CBool(Obj.AccessWrite))
  159.     End If
  160.     If (Obj.Class ="IIsFTPVirtualDir") Then
  161.         wscript.echo "Path: " & Obj.path
  162.         wscript.echo "UNC User Name: " & Obj.UNCUserName
  163.         wscript.echo "Read Access is " & CStr(CBool(Obj.AccessRead))
  164.         wscript.echo "Write Access is " & CStr(CBool(Obj.AccessWrite))
  165.     End If
  166.     if (Obj.Class = "IIsWebService") or (Obj.Class = "IIsFTPService") or (Obj.Class = "IIsWebServer") or    (Obj.Class =  "IIsFTPServer") Then
  167.         wscript.echo "Server Comment: " & Obj.ServerComment
  168.         wscript.echo "AnonymousUserName: " & Obj.AnonymousUserName
  169.         wscript.echo "Default Logon Domain: " & Obj.DefaultLogonDomain
  170.         wscript.echo "Max Connections: " & Obj.MaxConnections
  171.         wscript.echo "Connection Timeout: " & Obj.ConnectionTimeout
  172.         wscript.echo "Read Access: " & Obj.AccessRead
  173.         wscript.echo "Write Access: " & Obj.AccessWrite
  174.         wscript.echo "Log: " & Not Obj.DontLog
  175.     End If    
  176. End Sub
  177.  
  178. Sub ASTFind(SearchStr,StartingPath,FieldToCheck,Class)
  179.     On Error Resume Next
  180.     Display "STARTING ASTFind --- Searching for object " & SearchStr & "..."
  181.  
  182.     Dim SourceObj
  183.     
  184.     If StartingPath = "" Then
  185.         StartingPath = "IIS://"
  186.     End If
  187.  
  188.     'Create and object for the Web service
  189.     Set SourceObj = GetObject(StartingPath)
  190.     If (Err <> 0) Then
  191.         Display "TERMINATING ASTFind --- Error accessing " & StartingPath & "."
  192.         Exit Sub
  193.     End If
  194.     
  195.     ObjCount = 0
  196.  
  197.     'Search for the object
  198.     Call FindInSubTree(SourceObj,SearchStr,FieldToCheck,Class)
  199.  
  200.     Select Case ObjCount
  201.         Case 0
  202.             Display "COMPLETED ASTFind --- Object " & SearchStr & " was not found."
  203.             Exit Sub
  204.         Case 1
  205.             Display "COMPLETED ASTFind --- Object " & SearchStr & " was found.  Path:" & FoundObj.ADsPath
  206.             DisplayObjectDetails(FoundObj)
  207.             Exit Sub
  208.         Case Else
  209.             Display "COMPLETED ASTFind --- Multiple objects match specified criteria.  Try narrowing search."
  210.             Exit Sub
  211.     End Select
  212. End Sub
  213.  
  214. '---------------------------------------------------------------------------------
  215.  
  216. Function Display(Msg)
  217.     WScript.Echo Now & ". Error Code: " & Err & " --- " & Msg
  218. End Function
  219.  
  220. '---------------------------------------------------------------------------------
  221.  
  222. ' Display the usage message
  223. Sub DisplayUsage
  224.     WScript.Echo "Usage: ASTFind [--ADSPath|-r ROOT NODE]"
  225.     WScript.Echo "               <--search|-s SEARCH STRING>"
  226.     WScript.Echo "               [--field|-f FIELD]"
  227.     WScript.Echo "               [--class|-c CLASS]"
  228.     WScript.Echo "               [--help|-?]"
  229.     WScript.Quit (1)    
  230. End Sub
  231.  
  232.