2013-04-08 67 views
4

我目前正在研究獲取用戶訂閱的郵件通訊組列表。我之前從未使用過Active Directory,並且在閱讀這裏和MSDN上的各種答案之後,我感到非常困惑。使用LDAP/AD查找用戶訂閱的郵件列表

我有我的查詢設置是這樣的:

DirectorySearcher search = new DirectorySearcher(); 
search.Filter = String.Format("LDAP://CN={0},OU=<value here>,DC=<value>...", userName); 
search.SearchScope = SearchScope.Subtree; 
search.PropertiesToLoad.Add("memberOf"); 
SearchResult result = search.FindOne(); 
if(result != null) 
{ 
    // Do stuff here 
} 

這裏是我的問題:

  1. 是什麼範圍內的DirectorySearcher的SearchRoot財產嗎?我是否需要設置這個查詢來返回一個值?
  2. 我是否需要將SearchScope值設置爲子樹是我只列出1個OU作爲基本OU,並讓它搜索所有子OU?
  3. 是將字符串發送到PropertiesToLoad.Add()泛型還是需要由我的公司定義的字符串?

感謝您的建議!

+1

我建議你下載http://directory.apache.org/studio/來日食和了解你的目錄。如果你有時間。在學習如何正確查詢AD/ldap時,大部分問題都會得到解答。 – Chris 2013-04-08 22:55:44

回答

1

(1)DirectorySearcher中的SearchRoot屬性有什麼作用?我是否需要設置這個查詢來返回一個值?

它定義了搜索的起點;將其與文件系統進行比較 - 它定義了起始目錄,您可以從中開始搜索。你會看到SearchRoot裏面,可能你會看着它的所有的兒童容器。它只是用來減少可能的容器數量來搜索的東西

(2)我是否需要將SearchScope值設置爲子樹是我只列出1 OU作爲基本OU並讓它搜索所有子OU中?

如果你要搜索OU或其他容器在你SearchRoot - 然後是的,你必須搜索SearchScope.Subtree - 否則搜索只會看你SearchRoot容器本身(在像用戶,計算機的所有對象,該容器內的組 - 但不是在子容器)。

(3)是將字符串發送到PropertiesToLoad.Add()泛型還是需要由我的公司定義的字符串?

這些是LDAP屬性名稱 - 它們可以是the standard ones以及貴公司可能定義和安裝的可能的自定義擴展。 Here's a really nice list of all AD attributes as an Excel sheet(實際上有幾個)。