2012-02-29 24 views
0

我想查詢活動目錄以獲取我的asp.net/C#應用程序中的用戶列表。爲什麼這個代碼不限於一個OU?

我有這樣的代碼:

adProvider = "LDAP"; 
    adPath = "DC00.Domain.prv/OU=Sub,OU=Users,OU=Test,DC=Domain,DC=prv"; 
    entry = new DirectoryEntry(string.Format("{0}://{1}", adProvider, adPath),"AD","ThePwd"); 
    DirectorySearcher searcher1 = new DirectorySearcher(entry); 


    searcher1 = new DirectorySearcher("objectClass=user"); 

    SearchResultCollection results1; 
    results1 = searcher1.FindAll(); 
    var list = new List<string>(); 
    for (int i = 0; i < results1.Count; i++) 
    { 

     list.Add(results1[i].Properties["cn"][0].ToString()); 
    } 
    return list; 

這是工作,因爲我是從用戶獲得的1000「通用名稱」列表,但。在事實Test/Users/Sub OU只能有一個用戶。它似乎請求正在搜索所有AD範圍內的用戶。

什麼問題?

感謝您的幫助

回答

2

也許我錯了,但你覆蓋變量searcher1兩次:

,如果你想使用的第一個這第二重寫也沒用......

searcher1 = new DirectorySearcher("objectClass=user"); 
+0

OMG我只是荒謬的愚蠢 – bAN 2012-02-29 12:31:55

+3

不,你只需要一點點停下來,去喝杯咖啡,看看太陽,然後一切都會好起來的) – 2012-02-29 12:33:36

1

使用過濾器"objectClass=user"充分利用您將收集用戶和計算機,您最好使用:

(&(objectCategory=person)(objectClass=user)) 
+0

感謝您的諮詢 – bAN 2012-03-02 09:57:25