2012-10-15 17 views
0

我設法讓ADS用戶沒有從我的ADS域(ex,mydomain.com)指定認證詳細信息。我使用ADODB.Connection和ADODB.Command。ADS用戶詳細信息 - 子域 - 從vbs文件

我也有像test.mydomain.com這樣的子域。如何通過指定屬於test.mydomain.com的用戶的身份驗證詳細信息從子域獲取用戶詳細信息。

+0

我不確定問題是什麼。你是問如何從子域查詢對象,還是你問如何對子域進行身份驗證,以便從中查詢對象? –

+0

對子域進行身份驗證,也無法從子域查詢對象,對於主域我能夠獲得用戶 – itsraja

回答

1

您可以使用其LDAP名稱作爲搜索基礎來查詢來自可信域的記錄。但是,由於父域的DC不包含有關子域中的對象的信息,因此它將生成一個referralADODB.Command對象不會自動chase轉介,因爲各自的named property"Chase referrals"默認爲0x00(ADS_CHASE_REFERRALS_NEVER)。你必須將屬性設置爲以下兩個值之一

  • ADS_CHASE_REFERRALS_SUBORDINATE(0×20)
  • 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 

我寫了一個包裝類(ADQuery)封裝Active Directory查詢樣板代碼(因爲我厭倦了一遍又一遍寫它)。這樣,您可以簡化上面是這樣的:

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上的腳本,雖然。

+0

嘗試過這種方式但未能獲得用戶信息 – itsraja

+0

如何?你有錯誤嗎?你在DC上運行過它嗎?你的查詢參數是什麼?你確定查詢實際上應該返回什麼嗎? 「不起作用」對於任何類型的故障排除來說都完全沒有足夠的信息。 –

+0

請發送有問題的代碼。我們無法在這裏閱讀/解析它.. – Lizz