0

ADS ドメイン (ex,mydomain.com) から認証の詳細を指定せずに ADS ユーザーを取得できました。ADODB.Connection と ADODB.Command を使用しました。

test.mydomain.com のようなサブドメインもあります。test.mydomain.com に属するユーザーの認証の詳細を指定して、サブドメインからユーザーの詳細を取得する方法。

4

1 に答える 1

1

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 でスクリプトを実行する必要がある場合があります。

于 2012-10-29T19:41:17.630 に答える