Inhaltsverzeichnis > Erweiterter Umgang mit AD Objekten > LDAP Search Werkstatt > Domänencontroller suchen
Active Direcory Domänencontroller suchen und finden
Wir benutzen für diese Suche das Active Directory Attribut userAccountControl, in dem bei Domänencontrollern das Bit UF_SERVER_TRUST_ACCOUNT (8192) gesetzt ist.
Der SelfADSI-Artikel über LDAP Filter beschreibt genau, wie man nach einzelnen Flags in derartigen Bitfledern sucht. Zur allgemeinen Erläuterung von LDAP-Suchvorgängen lesen Sie das SelfADSI-Kapitel
"LDAP Objekte im Verzeichnis suchen".
Alle Domänencontroller der eigenen Domäne finden
Dieses Script findet alle Active Directory Domänencontroller in der Domäne, in der der aktuell angemeldete Benutzer Mitglied ist:
ldapFilter = "(&(objectCategory=computer)(userAccountControl:1.2.840.113556.1.4.803:=8192))"
Set rootDSE = GetObject("LDAP://rootDSE")
domainDN = rootDSE.Get("defaultNamingContext")
Set ado = CreateObject("ADODB.Connection")
ado.Provider = "ADSDSOObject"
ado.Open "ADSearch"
Set objectList = ado.Execute("<LDAP://" & domainDN & ">;" & ldapFilter & ";distinguishedName,dnsHostName;subtree")
While Not objectList.EOF
dcDN = objectList.Fields("distinguishedName")
dcDNS = objectList.Fields("dnsHostName")
WScript.Echo dcDNS & " " & dcDN
objectList.MoveNext
Wend
Alle Domänencontroller in irgendeiner Domäne/OU finden
Dieses Script findet alle Active Directory Domänencontroller in der angegebenen Domäne oder OU. Verwenden Sie hier den passenden LDAP Pfad für die von Ihnen gewünschten Domänen bzw. OU. Außerdem können Sie hier noch andere Anmeldedaten für den Suchvorgang (Benutzernamen und Passwort) angeben:
searchDN = "DC=example,DC=com" 'geben Sie hier einen eigenen Pfad zu einer Domäne oder OU an
serverName = "192.168.0.66" 'geben Sie hier den Namen/die Adresse Ihres DCs an
'insert your own DC's name or address
userName = InputBox("Enter user name","Credentials") 'Sie könnten den Benutzernamen auch direkt angeben, z.B. "EXAMPLE\userXYZ"
password = InputBox("Enter password","Credentials") 'Sie könnten das PAsswort auch direkt angeben, z.B. "P@ssw0rd"
ldapFilter = "(&(objectCategory=computer)(userAccountControl:1.2.840.113556.1.4.803:=8192))"
Set ado = CreateObject("ADODB.Connection")
ado.Provider = "ADSDSOObject"
ado.Properties("User ID") = userName
ado.Properties("Password") = password
ado.Properties("Encrypt Password") = True
ado.Open "ADSearch"
Set objectList = ado.Execute("<LDAP://" & serverName & "/" & searchDN & ">;" & ldapFilter & ";distinguishedName,dnsHostName;subtree")
While Not objectList.EOF
dcDN = objectList.Fields("distinguishedName")
dcDNS = objectList.Fields("dnsHostName")
WScript.Echo dcDNS & " " & dcDN
objectList.MoveNext
Wend
Alle Domänencontroller im eigenen Forest finden
Dieses Script findet alle Domänencontroller in dem Active Directory Forest, in der der aktuell angemeldete Benutzer Mitglied ist. Bitte beachten, dass hier nur diejenigen Attribute durchsucht werden können, die auch im Global Catalog enthalten sind. Das betrifft den Aufbau des Suchfilters als auch die Liste der Attribute, die in der Suche angefordert werden:
ldapFilter = "(&(objectCategory=computer)(userAccountControl:1.2.840.113556.1.4.803:=8192))"
Set aoi = CreateObject("ADSystemInfo") 'die Forest Suchbasis ermitteln
gcBase = aoi.ForestDNSName
Set ado = CreateObject("ADODB.Connection")
ado.Provider = "ADSDSOObject"
ado.Open "ADSearch"
Set objectList = ado.Execute("<GC://" & gcBase & ">;" & ldapFilter & ";distinguishedName,dnsHostName;subtree")
While Not objectList.EOF
dcDN = objectList.Fields("distinguishedName")
dcDNS = objectList.Fields("dnsHostName")
WScript.Echo dcDNS & " " & dcDN
objectList.MoveNext
Wend