2011-01-26 127 views
0

我試圖通過從AD中提取OU名稱和電話號碼來製作電話目錄。在搜索當前OU中是否填寫了電話字段,並且該OU具有也包含電話字段的子OU時,也會返回這些用戶帳戶。例如:LDAP查詢搜索深度問題

美國

---德州

---佛羅里達

---紐約

我試圖找到我的電話字段中的所有用戶填寫在美國OU,但它是從德克薩斯州,佛羅里達州和紐約回來的用戶。有沒有辦法限制LDAP搜索的深度?

我使用C#和我目前的過濾器來查找用戶只是

(&(objectClass的=用戶)(objectCategory =人))

任何幫助將不勝感激!

+0

所以你只是想在「根」 OU「USA」的用戶? – curtisk 2011-01-26 19:54:38

+0

您可以使用(telephoneNumber = *)按電話號碼進行過濾,或根據所需字段將telephoneNumber更改爲另一個屬性。我們在這裏有Cisco IP電話,所以我們使用(ipPhone = *)。 – Peter 2011-01-27 15:31:37

回答

2

我假設您使用DirectorySearcher來執行LDAP查詢。您可以通過將DirectorySearcher.SearchScope設置爲SearchScope.OneLevel來限制您在美國OU級別上的搜索。

下面是一個示例,它可能看起來像

IEnumerable<DirectoryEntry> FindUsers(DirectoryEntry root) 
{ 
    using (DirectorySearcher searcher = new DirectorySearcher(root)) 
    { 
     searcher.Filter = "(&(objectClass=user)(objectCategory=person))"; 
     searcher.SearchScope = SearchScope.OneLevel; 
     searcher.PageSize = 1000; 
     foreach (SearchResult result in searcher.FindAll()) 
     { 
      yield return result.GetDirectoryEntry(); 
     } 
    } 
}