Freigeben über


How to get all DCs in a Forest (VBScript)

Hi all,

The following VBScript sample lists all DCs in a Forest:

 ' Create log file
'
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLog = objFSO.CreateTextFile ("log.txt")

' Get Forest's root
'
Set objRoot = GetObject("LDAP://rootDSE")

' Get root's Configuration
'
Set objConfig = GetObject("LDAP://" & objRoot.Get("ConfigurationNamingContext"))

' Search for the Partitions container in root's Configuration
'
objConfig.Filter = Array("crossRefContainer")
For Each objPartition in objConfig
    strPartition = "LDAP://" & objPartition.Get("distinguishedName")
Next

' Search in Partitions for all domains in Forest
'
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"

Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
    
objCommand.CommandText = "<" & strPartition & ">;(&(systemFlags=3));nCName,systemFlags;subTree"
Set objRecordset = objCommand.Execute
    
' List all domains in Forest
'
Do While Not objRecordset.EOF
    ' List all DCs in one domain
    '
   objLog.WriteLine("=================================================")
   objLog.WriteLine(objRecordset.Fields(0))
    objLog.WriteLine("=================================================")
   Set objDCs = GetObject("GC://OU=Domain Controllers," & objRecordset.Fields(0))  
    For Each objDC in objDCs
        objLog.WriteLine(objDC.Get("Name"))     
    Next
    objLog.WriteLine("-------------------------------------------------")
   
    objRecordset.MoveNext
Loop
     
' We are done!
'     
objLog.Close
MsgBox "The End"

 

I hope this helps. 

Regards,

 

Alex (Alejandro Campos Magencio)

Comments

  • Anonymous
    September 10, 2011
    Worked like a charm! Thank you!