2016-06-22 11 views
0

Active Directoryから連絡先を取得する必要のあるアプリケーションがあります。ここでActiveDirectory(.NET)の連絡先の検索

は、私が使用しているコードです:

Public Function GetADContacts(ByVal LastNameStarts As String) As DirectoryServices.SearchResultCollection 
    Dim rootDSE As New DirectoryServices.DirectoryEntry("LDAP://RootDSE") 
    Dim defaultNamingContext As String = rootDSE.Properties("defaultNamingContext").Value.ToString() 
    Dim objSearch As New DirectoryServices.DirectorySearcher() 
    Dim cllQueryResults As DirectoryServices.SearchResultCollection 

    With objSearch 
     .SearchRoot = New DirectoryServices.DirectoryEntry("LDAP://" + defaultNamingContext) 
     .Filter = "(&(objectclass=contact)(mailNickname=*)(cn=*)(sn=" + LastNameStarts + "*)(givenname=*))" 
     .SearchScope = DirectoryServices.SearchScope.Subtree 
     .PropertiesToLoad.AddRange(New String() {"cn", "sn", "givenname", "mailNickname"}) 
     .Sort.PropertyName = "sn" 
     .Sort.Direction = DirectoryServices.SortDirection.Ascending 
     cllQueryResults = .FindAll() 
    End With 

    Return cllQueryResults 
End Function 

私は連絡先がSN、CN、givennameのを持っており、mailNicknameがセットに属性を確認するためにチェックしましたが、何も返されません。 objectcategoryをuserに変更すると、すべてのユーザーが取得されますが、連絡先の場合は何も取得されません。

私が間違っていることはありますか?非常に有用であり

Dim Searcher As New DirectorySearcher("LDAP://") 
Dim QueryResults As SearchResultCollection 
Dim Result As SearchResult 

Searcher.PropertiesToLoad.Add("distinguishedName") 
Searcher.Filter = "(&(objectCategory=person)(objectClass=contact))" 

QueryResults = Searcher.FindAll 

For Each Result In QueryResults 
    Console.WriteLine(Result.Properties("distinguishedName")(0)) 
Next 

Console.ReadLine() 

:ここ

Searcher.Filter = "(&(objectCategory=person)(objectClass=contact))" 

すべての連絡先のDNを取得するには少し例:あなただけのフィルタは次のようになります。連絡先を検索したい場合は

答えて