Freigeben über


Bindung an den globalen Katalog

Der globale Katalog ist ein Namespace, der Verzeichnisdaten für alle Domänen in einer Gesamtstruktur enthält. Der globale Katalog enthält ein Teilreplikat jedes Domänenverzeichnisses. Sie enthält einen Eintrag für jedes Objekt in der Unternehmensgesamtstruktur, enthält aber nicht alle Eigenschaften der einzelnen Objekte. Stattdessen enthält es nur die Eigenschaften, die für die Aufnahme in den globalen Katalog angegeben sind.

Der globale Katalog wird auf bestimmten Servern im gesamten Unternehmen gespeichert. Nur Domänencontroller können als globale Katalogserver dienen. Administratoren geben mithilfe des Active Directory-Standort- und Dienste-Managers an, ob ein bestimmter Domänencontroller einen globalen Katalog enthält.

Um mit ADSI an den globalen Katalog zu binden, verwenden Sie den Moniker "GC:".

Es gibt zwei Möglichkeiten, sich an den globalen Katalog zu binden, um eine Suche in einer Gesamtstruktur durchzuführen:

  • Binden Sie an das Unternehmensstammobjekt, um alle Domänen in der Gesamtstruktur zu durchsuchen.
  • Binden Sie an ein bestimmtes Objekt, um dieses Objekt und seine untergeordneten Elemente zu durchsuchen. Wenn Sie beispielsweise eine Bindung an eine Domäne mit zwei Domänen in einer Domänenstruktur in der Gesamtstruktur haben, können Sie diese drei Domänen durchsuchen. Beachten Sie, dass der distinguished Name für das Objekt, an das gebunden werden soll, genau mit dem distinguished Name identisch ist, der zum Binden an den Namespace "LDAP:" verwendet wird. Denken Sie daran, dass "LDAP:" ein vollständiges Replikat einer einzelnen Domäne ist und dass "GC:" ein Teilreplikat aller Domänen in der Gesamtstruktur ist.

Wie beim Moniker "LDAP:" können Sie die serverlose Bindung verwenden oder an einen bestimmten globalen Katalogserver binden. Wenn Sie in der aktuellen Gesamtstruktur suchen, verwenden Sie die serverlose Bindung. Wenn Sie jedoch in einer anderen Gesamtstruktur suchen, geben Sie entweder einen Domänennamen oder einen globalen Katalogserver an, an den eine Bindung erfolgen soll, wie in den folgenden Beispielen gezeigt.

Binden Sie mithilfe des Domänennamens:

GC://fabrikam.com

Binden Sie mithilfe des Servernamens:

GC://servername

Sie können auch eine Bindung an ein bestimmtes Objekt innerhalb des globalen Katalogs herstellen. Verwenden Sie das folgende Format, um eine Bindung an das sales-Objekt in der Domäne fabrikam zu erstellen.

GC://fabrikam.com/DC=sales,DC=fabrikam,DC=com

Oder verwenden Sie das folgende Format, um eine Bindung an das sales-Objekt auf dem Server zu erstellen.

GC://servername.fabrikam.com/DC=sales,DC=fabrikam,DC=com

So durchsuchen Sie die gesamte Gesamtstruktur

  1. Binden Sie an den Stamm des Global Catalog-Namespace.
  2. Enumerate the Global Catalog container. Der Container Global Catalog enthält ein einzelnes Objekt, mit dem Sie die gesamte Gesamtstruktur durchsuchen können.
  3. Verwenden Sie das -Objekt im Container, um die Suche auszuführen. Rufen Sie in C/C++ QueryInterface auf, um einen IDirectorySearch-Zeiger auf das Objekt abzurufen, sodass Sie die IDirectorySearch-Schnittstelle verwenden können, um die Suche auszuführen. Verwenden Sie in Visual Basic das von der Enumeration in Ihrer ADO-Abfrage zurückgegebene Objekt.

Führen Sie zum Auflisten der globalen Katalogserver in einem Standort eine LDAP-Unterstruktursuche nach "cn=<yoursite,cn>=sites,DN< of the configurationNamingContext>" mithilfe der folgenden Filterzeichenfolge aus.

(&(objectCategory=nTDSDSA)(options:1.2.840.113556.1.4.803:=1))

Dieser Filter verwendet den LDAP_MATCHING_RULE_BIT_AND übereinstimmenden Regeloperator (1.2.840.113556.1.4.803), um nTDSDSA-Objekte zu finden, bei denen das Bit mit niedriger Reihenfolge in der Bitmaske des options-Attributs festgelegt ist. Das Bit mit niedriger Reihenfolge, das der in Ntdsapi.h definierten NTDSDSA_OPT_IS_GC Konstante entspricht, identifiziert das nTDSDSA-Objekt eines globalen Katalogservers. Weitere Informationen zu abgleichenden Regeln finden Sie unter Suchfiltersyntax.

Das übergeordnete Element des nTDSDSA-Objekts ist das Serverobjekt, und die dNSHostName-Eigenschaft des Serverobjekts ist der DNS-Name des Global Catalog-Servers.

Sie können #define Konstanten wie NTDSDSA_OPT_IS_GC und LDAP_MATCHING_RULE_BIT_AND nicht direkt in einer Suchfilterzeichenfolge verwenden. Sie können diese Konstanten jedoch als Argumente für eine Funktion wie swprintf_s verwenden, um die Konstantenwerte in eine Filterzeichenfolge einzufügen.

Der globale Katalog stellt nicht die gesamte Struktur der Gesamtstruktur dar. Sie könnten beispielsweise erwarten, dass im folgenden Codebeispiel alle Domänen in der Gesamtstruktur und alle untergeordneten Objekte jeder Domäne aufgelistet werden. Tatsächlich werden alle Domänen in der Gesamtstruktur aufgelistet, aber keines der aufgezählten Domänenobjekte enthält untergeordnete Elemente. Dies ist eine Einschränkung des globalen Katalogs.

Dim oGC As IADs
Dim oDomain As IADs
Dim oChild As IADs

Set oGC = GetObject("GC:")
For Each oDomain In oGC
    ' Print the name of the domain.
    Debug.Print oDomain.Name
    
    ' Enumerate the child objects of the domain.
    For Each oChild In oDomain
        Debug.Print oChild.Name
    Next
Next

Um dies zu korrigieren, ist es erforderlich, eine Bindung an jedes Domänenobjekt zu binden und dann die untergeordneten Objekte jeder Domäne aufzulisten. Das richtige Verfahren wird im folgenden Codebeispiel gezeigt.

Dim oGC As IADs
Dim oDomainEnum As IADs
Dim oDomainBind As IADs
Dim oChild As IADs

Set oGC = GetObject("GC:")
For Each oDomainEnum In oGC
    ' Print the name of the domain.
    Debug.Print oDomainEnum.Name
    
    ' Bind to the domain.
    Set oDomainBind = GetObject("LDAP://" + oDomainEnum.Name)
    
    ' Enumerate the child objects of the domain.
    For Each oChild In oDomainBind
        Debug.Print oChild.Name
    Next
Next

Weitere Informationen und Codebeispiele, die zeigen, wie eine gesamte Gesamtstruktur durchsucht wird, finden Sie unter Beispielcode für die Suche nach einer Gesamtstruktur.