Printout Header
RSS Feed

Wie finde ich einen Globalen Katalog Server?



Mit DNS-Abfragen (NSLOOKUP)


In einer Active Directory-Umgebung sind alle Global Katalogs im DNS verankert. Es existiert hier eine eigene Subdomäne "GC._msdcs...." im Namensraum der AD Root-Domäne (wir erinnern uns: Der globale Katalog bezieht sich nicht auf einzelne Domänen, sondern auf den gesamten Forest). Wenn ihre Root-Domäne im Forest also z.B. example.root ist, dann bekommt man eine Liste aller GCs mit folgendem Befehl:

C:\> nslookup gc._msdcs.example.root

Server:  dns01.example.root
Address:  10.127.60.3

Name:  gc._msdcs.example.root
Adresses:  10.127.60.100
           10.127.60.102
           10.127.60.103
           10.127.77.1
           10.127.77.130
           10.127.93.2
           10.127.93.12
           192.168.35.1

Der Container _msdcs ist dafür da, die Infrastruktur-Records des Active Directories zu beinhalten. Hier liegen auch alle SRV Service-Records für die Domänencontroller.


Mit DSQUERY


Auch mit dem Standard-Tool DSQUERY läßt sich nach GCs suchen. Hier können Sie die Suche sogar einschränken auf bestimmte Domänen oder AD Sites. Allerdings müssen Sie dafür gerade selbst im betreffenden Forest angemeldet sein und DSQUERY muß als Kommando zur Verfügung stehen (Das ist normalerweise nur auf Widows Servern der Fall). Als Ergebnis werden die Server-Objekte in der Configuration Partition angezeigt:

Suche nach allen Globalen Katalog Servern (in der Domäne.... / in der Site....):

C:\> dsquery server -isgc

"CN=DC001,CN=Servers,CN=Site-Sidney,CN=Sites,CN=Configuration,DC=example,DC=root"
"CN=DC014,CN=Servers,CN=Site-Auckland,CN=Sites,CN=Configuration,DC=example,DC=root"
...


C:\> dsquery server -isgc -domain "dev.example.com"
...

C:\> dsquery server -isgc -site "Site-Auckland"
...


Per Script mit einem LDAP Filter


Im letzten Abschnitt haben wir gesehen, dass die Globalen Katalog Server in der Configuration Partition des Verzeichnisses als Server-Objekte vorhanden sind. Her können wir sie auch mit einem eigenen Script suchen. Diese Server haben im Attribut "options" das erste Bit gesetzt. Wir benötigen hier nur den entsprechenden LDAP Filter:

ldapFilter = "(&(objectClass=nTDSDSA)(options:1.2.840.113556.1.4.803:=1))" Set rootDSE = GetObject("LDAP://rootDSE") configDN = rootDSE.Get("configurationNamingContext") Set ado = CreateObject("ADODB.Connection") ado.Provider = "ADSDSOObject" ado.Open "ADSearch" Set objectList = ado.Execute("<LDAP://" & configDN & ">;" & ldapFilter & ";distinguishedName;subtree") While Not objectList.EOF nTSDSA = objectList.Fields("distinguishedName") serverDN = Mid(nTSDSA, 18) 'CN=NTDS Settings abschneiden => Server Objekt Set serverObj = GetObject("LDAP://" & serverDN ) WScript.Echo serverObj.dNSHostName objectList.MoveNext Wend

Vorsicht: Beim eigentlichen Server-Objekt existiert seit Windows Server 2008 das Attribut msDS-isGC, dieses ist jedoch ein Constructed Attribut und kann nicht direkt im LDAP Filter für die Suche verwendet werden. Deswegen bleibt nur der Umweg über das Attribut options beim betreffenden NTDSA-Objekt unterhalb des Servers.