Decrypt my World

Cryptography, Security, Debugging and more!

How to get all DCs in a Forest (VBScript)

How to get all DCs in a Forest (VBScript)

  • Comments 1

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)

  • Worked like a charm! Thank you!

Page 1 of 1 (1 items)
Leave a Comment
  • Please add 4 and 5 and type the answer here:
  • Post
Translate This Page