ADS ドメイン (ex,mydomain.com) から認証の詳細を指定せずに ADS ユーザーを取得できました。ADODB.Connection と ADODB.Command を使用しました。
test.mydomain.com のようなサブドメインもあります。test.mydomain.com に属するユーザーの認証の詳細を指定して、サブドメインからユーザーの詳細を取得する方法。
LDAP 名を検索ベースとして使用して、信頼できるドメインからレコードを照会できます。ただし、親ドメインの DC には子ドメインのオブジェクトに関する情報が含まれていないため、参照が生成されます。それぞれの名前付きプロパティのデフォルトが 0x00 ( )であるため、オブジェクトはその参照をADODB.Command
自動的に追跡しません。プロパティを次の 2 つの値のいずれかに設定する必要があります "Chase referrals"
ADS_CHASE_REFERRALS_NEVER
ADS_CHASE_REFERRALS_SUBORDINATE
(0x20)ADS_CHASE_REFERRALS_ALWAYS
(0x60)あなたのクエリが紹介に従うようにします。例:
base = "<LDAP://dc=test,dc=example,dc=org>"
filter = "(&(objectCategory=computer)(name=foo*))"
attr = "name,description"
scope = "subtree"
Set conn = CreateObject("ADODB.Connection")
conn.Provider = "ADsDSOObject"
conn.Open "Active Directory Provider"
Set cmd = CreateObject("ADODB.Command")
Set cmd.ActiveConnection = conn
cmd.CommandText = base & ";" & filter & ";" & attr & ";" & scope
cmd.Properties("Chase referrals") = &h60 ' <-- here
Set rs = cmd.Execute
Active Directory クエリのボイラープレート コードをカプセル化するラッパー クラス ( ADQuery ) を作成しました (何度も何度も書くことにうんざりしたため)。これにより、上記を次のように単純化できます。
Set qry = New ADQuery
qry.SearchBase = "dc=test,dc=example,dc=org"
qry.Filter = "(&(objectCategory=computer)(name=foo*))"
qry.Attributes = Array("name", "description")
Set rs = qry.Execute
ただし、どちらの方法でも、DC でスクリプトを実行する必要がある場合があります。