2011-01-28 8 views
1

指定したマネージャを持つActive Directoryからユーザーの一覧を取得しようとしています。 私は成功せず、次のLDAPフィルターを使用:Active Directory検索 - マネージャによるフィルタ

(manager=CN=Misterboss_n*) 

をしかし、それは結果を返しません。ユーザーはマネージャー属性に次の値を設定します。

"CN=Misterboss_n,OU=xyz user,DC=xyz,DC=local" 

私は間違っていますか?上記のフィルタを次のように置き換えた場合:

(givenName=John*) 

これは問題なく動作します(名前がJohnのすべてのユーザーを返します)。

広い文脈:助けを

public List<ADUserDetail> GetAllEmployeesUnderMisterboss() 
     { 
      List<ADUserDetail> userlist = new List<ADUserDetail>(); 
      string filter = ""; 
      _directoryEntry = null; 
      DirectorySearcher directorySearch = new DirectorySearcher(SearchRoot); 
      directorySearch.Asynchronous = true; 
      directorySearch.CacheResults = true; 
      filter = "(manager=CN=Misterboss_n*)"; 
      directorySearch.Filter = filter; 
      SearchResultCollection userCollection = directorySearch.FindAll(); 
      foreach (SearchResult users in userCollection) 
      { 
       DirectoryEntry userEntry = new DirectoryEntry(users.Path, LDAPUser, LDAPPassword); 
       ADUserDetail userInfo = ADUserDetail.GetUser(userEntry); 
       userlist.Add(userInfo); 
      } 
      return userlist; 
     } 

ありがとう!

答えて

1

DN型のプロパティでは、フィールド開始の検索ができないと思います。マネージャーの完全なDNを使用する必要があります。完全なDNがわからない場合は、最初にマネージャのLDAPオブジェクトを見つけて、そのdistinguishedNameプロパティを使用してください。

あなたのフィルタを構築する前にescape the DN value properlyに必ず - ないDNで有効であるすべての文字も、LDAPフィルタ式で有効です:コードサンプルについては

* as \2a 
( as \28 
) as \29 
\ as \5c 
NUL as \00 
/ as \2f 

、私は答えた。この関連のスレッドを見ます非常によく似た質問:Getting all direct Reports from Active Directory

+0

ありがとうTomalak! 完全なDNを使用して問題を解決しました。 – Marton

関連する問題