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 (1)

  1. Ken says:

    Worked like a charm! Thank you!