Bagikan melalui


Pengikatan ke Katalog Global

Katalog Global adalah namespace layanan yang berisi data direktori untuk semua domain di forest. Katalog Global berisi replika parsial dari setiap direktori domain. Ini berisi entri untuk setiap objek di forest perusahaan, tetapi tidak berisi semua properti setiap objek. Sebaliknya, ini hanya berisi properti yang ditentukan untuk dimasukkan dalam Katalog Global.

Katalog Global disimpan di server tertentu di seluruh perusahaan. Hanya pengendali domain yang dapat berfungsi sebagai server Katalog Global. Administrator menunjukkan apakah pengendali domain tertentu menyimpan Katalog Global dengan menggunakan Situs Direktori Aktif dan Pengelola Layanan.

Untuk mengikat Katalog Global dengan ADSI, gunakan moniker "GC:".

Ada dua cara untuk mengikat Katalog Global untuk melakukan pencarian di forest:

  • Ikat ke objek akar perusahaan untuk mencari di semua domain di forest.
  • Ikat ke objek tertentu untuk mencari objek tersebut dan anak-anaknya. Misalnya, jika Anda mengikat ke domain yang memiliki dua domain di bawahnya di pohon domain di forest, Anda dapat mencari di ketiga domain tersebut. Ketahuilah bahwa nama khusus untuk objek yang diikat sama persis dengan nama khusus yang digunakan untuk mengikat namespace "LDAP:". Ingat bahwa "LDAP:" adalah replika penuh dari satu domain dan bahwa "GC:" adalah replika parsial dari semua domain di forest.

Seperti halnya moniker "LDAP:", Anda dapat menggunakan pengikatan tanpa server atau mengikat ke server Katalog Global tertentu. Jika mencari di forest saat ini, gunakan pengikatan tanpa server. Namun, jika mencari di forest lain, tentukan nama domain atau server Katalog Global yang akan diikat, seperti yang diperlihatkan dalam contoh berikut.

Ikat menggunakan nama domain:

GC://fabrikam.com

Ikat menggunakan nama server:

GC://servername

Anda juga dapat mengikat objek tertentu dalam Katalog Global. Untuk mengikat objek penjualan di domain fabrikam, gunakan format berikut.

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

Atau, untuk mengikat objek penjualan di server, gunakan format berikut.

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

Untuk mencari seluruh forest

  1. Ikat ke akar namespace Katalog Global.
  2. Menghitung kontainer Katalog Global. Kontainer Katalog Global berisi satu objek yang dapat Anda gunakan untuk mencari seluruh forest.
  3. Gunakan objek dalam kontainer untuk melakukan pencarian. Di C/C++, panggil QueryInterface untuk mendapatkan penunjuk IDirectorySearch pada objek sehingga Anda dapat menggunakan antarmuka IDirectorySearch untuk melakukan pencarian. Di Visual Basic, gunakan objek yang dikembalikan dari enumerasi dalam kueri ADO Anda.

Untuk menghitung server Katalog Global di situs, lakukan pencarian subtree LDAP "cn=<yoursite,cn>=sites,DN< dari configurationNamingContext>", menggunakan string filter berikut.

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

Filter ini menggunakan operator aturan pencocokan LDAP_MATCHING_RULE_BIT_AND (1.2.840.113556.1.4.803) untuk menemukan objek nTDSDSA yang memiliki bit berurutan rendah yang diatur dalam bitmask atribut opsi . Bit berurutan rendah, yang sesuai dengan konstanta NTDSDSA_OPT_IS_GC yang ditentukan dalam Ntdsapi.h, mengidentifikasi objek nTDSDSA dari server Katalog Global. Untuk informasi selengkapnya tentang aturan yang cocok, lihat Sintaks Filter Pencarian.

Induk objek nTDSDSA adalah objek server, dan properti dNSHostName dari objek server adalah nama DNS server Katalog Global.

Anda tidak dapat menggunakan konstanta #define seperti NTDSDSA_OPT_IS_GC dan LDAP_MATCHING_RULE_BIT_AND langsung dalam string filter pencarian. Namun, Anda dapat menggunakan konstanta ini sebagai argumen ke fungsi seperti swprintf_s untuk menyisipkan nilai konstanta ke dalam string filter.

Katalog global tidak mewakili seluruh struktur pohon hutan. Misalnya, Anda mungkin mengharapkan bahwa contoh kode berikut akan menghitung semua domain di forest dan semua objek anak dari setiap domain. Pada kenyataannya, apa yang sebenarnya dilakukan adalah menghitung semua domain di forest, tetapi tidak ada objek domain enumerasi yang berisi anak-anak. Ini adalah batasan katalog global.

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

Untuk memperbaiki ini, perlu untuk mengikat ke setiap objek domain dan kemudian menghitung objek anak dari setiap domain. Teknik yang tepat ditunjukkan dalam contoh kode berikut.

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

Untuk informasi selengkapnya dan contoh kode yang memperlihatkan cara mencari seluruh forest, lihat Contoh Kode untuk Mencari Forest.