Udostępnij przez


Wiązanie z katalogiem globalnym

Wykaz globalny to przestrzeń nazw zawierająca dane katalogu dla wszystkich domen w lesie. Wykaz globalny zawiera częściową replikę każdego katalogu domeny. Zawiera on wpis dla każdego obiektu w lesie przedsiębiorstwa, ale nie zawiera wszystkich właściwości każdego obiektu. Zamiast tego zawiera tylko właściwości określone do włączenia do wykazu globalnego.

Wykaz globalny jest przechowywany na określonych serwerach w całym przedsiębiorstwie. Tylko kontrolery domeny mogą służyć jako serwery wykazu globalnego. Administratorzy wskazują, czy dany kontroler domeny posiada globalny katalog, używając Menedżera witryn i usług Active Directory.

Aby połączyć się z katalogiem globalnym za pomocą interfejsu ADSI, użyj monikera "GC:".

Istnieją dwa sposoby powiązania z wykazem globalnym w celu przeprowadzenia wyszukiwania w lesie:

  • Połącz się z obiektem głównym przedsiębiorstwa, aby przeszukiwać wszystkie domeny w lesie domen.
  • Powiąż z określonym obiektem, aby wyszukać ten obiekt i jego obiekty podrzędne. Na przykład, jeśli powiążesz się z domeną, która ma dwie domeny poniżej w drzewie domen, możesz przeszukiwać te trzy domeny. Należy pamiętać, że nazwa wyróżniająca obiektu, z którą ma zostać powiązana, jest dokładnie taka sama jak nazwa wyróżniająca używana do powiązania z przestrzenią nazw "LDAP:". Pamiętaj, że "LDAP:" jest pełną repliką pojedynczej domeny i że "GC:" jest częściową repliką wszystkich domen w lesie.

Podobnie jak w przypadku nazwy "LDAP:" można użyć powiązania bezserwerowego lub powiązania z określonym serwerem wykazu globalnego. W przypadku wyszukiwania w bieżącym lesie użyj powiązania bezserwerowego. Jeśli jednak chcesz wyszukiwać w innym lesie, określ nazwę domeny lub serwer wykazu globalnego do powiązania, tak jak w poniższych przykładach.

Powiązywanie przy użyciu nazwy domeny:

GC://fabrikam.com

Powiązywanie przy użyciu nazwy serwera:

GC://servername

Można również powiązać z określonym obiektem w wykazie globalnym. Aby powiązać obiekt sprzedaży w domenie fabrikam, użyj następującego formatu.

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

Aby powiązać obiekt sprzedaży na serwerze, użyj następującego formatu.

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

Aby przeszukać cały las

  1. Połącz się z korzeniem przestrzeni nazw wykazu globalnego.
  2. Wylicz kontener katalogu globalnego. Kontener wykazu globalnego zawiera pojedynczy obiekt, którego można użyć do przeszukiwania całego lasu.
  3. Użyj obiektu w kontenerze, aby przeprowadzić wyszukiwanie. W języku C/C++wywołaj QueryInterface, aby uzyskać wskaźnik IDirectorySearch na obiekcie, aby można było użyć interfejsu IDirectorySearch do wykonania wyszukiwania. W języku Visual Basic użyj obiektu zwróconego z wyliczenia w zapytaniu ADO.

Aby wyliczyć serwery Globalnego Katalogu w lokalizacji, wykonaj wyszukiwanie poddrzewa LDAP "cn=<witryny>,cn=sites,<DN konfiguracji NamingContext>", używając następującego ciągu filtrującego.

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

Ten filtr używa operatora reguły dopasowywania LDAP_MATCHING_RULE_BIT_AND (1.2.840.113556.1.4.803), aby znaleźć nTDSDSA obiekty, które mają ustawiony bit o niskiej kolejności w masce bitowej atrybutu opcji. Bit o niskiej kolejności, który odpowiada stałej NTDSDSA_OPT_IS_GC zdefiniowanej w ntdsapi.h, identyfikuje nTDSDSA obiektu serwera wykazu globalnego. Aby uzyskać więcej informacji na temat dopasowywania reguł, zobacz Składnia filtru wyszukiwania.

Elementem nadrzędnym obiektu nTDSDSA jest obiekt serwera, a właściwość dNSHostName obiektu serwera jest nazwą DNS serwera wykazu globalnego.

Nie można używać stałych #define, takich jak NTDSDSA_OPT_IS_GC i LDAP_MATCHING_RULE_BIT_AND, bezpośrednio w łańcuchu filtru wyszukiwania. Można jednak użyć tych stałych jako argumentów do funkcji, takiej jak swprintf_s, aby wstawić wartości stałe do ciągu filtru.

Katalog globalny nie odzwierciedla całej struktury lasu. Na przykład można oczekiwać, że poniższy przykład kodu wylicza wszystkie domeny w lesie i wszystkie obiekty podrzędne każdej domeny. W rzeczywistości, to co faktycznie robi, to wylicza wszystkie domeny w lesie, ale żaden z wyliczonych obiektów domeny nie zawiera żadnych dzieci. Jest to ograniczenie globalnego katalogu.

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

Aby rozwiązać ten krok, należy powiązać z każdym obiektem domeny, a następnie wyliczyć obiekty podrzędne każdej domeny. Właściwa technika jest pokazana w poniższym przykładzie kodu.

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

Aby uzyskać więcej informacji i przykładów kodu, które pokazują, jak przeszukiwać cały las, zobacz przykładowy kod wyszukiwania lasu.