2014-10-29 4 views
-1

LDAP에 특정 departmentnumber에 할당 된 사용자 목록을 쿼리하려고합니다. 약 100 개의 목록이어야합니다. 아래 코드는 하나의 멤버 만 반환합니다 (성은LDAP 부서 번호 쿼리

Dim userIds As IEnumerable(Of String) = {"7871"} 
For Each i As String In userIds 
    Dim de As New DirectoryEntry("LDAP://test.net:389/DC=test,DC=net") 
    Dim LdapFilter As String = "(departmentNumber=" & i & ")" 
    Dim searcher As New DirectorySearcher(de, LdapFilter) 
    Dim result As SearchResult = searcher.FindOne() 
    Dim res As SearchResultCollection = searcher.FindAll() 
    Dim item As ListViewItem = ListView1.Items.Add(i) 
    item.SubItems.Add(result.Properties("givenName")(0).ToString()) 
    item.SubItems.Add(result.Properties("cn")(0).ToString()) 
    item.SubItems.Add(result.Properties("userPrincipalName")(0).ToString()) 
Next 
+0

당신은 두 개의 쿼리를 실행하는 것 -'searcher.FindOne을()'와'수색자 .FindAll()'을 호출하지만'FindAll()'호출의 결과를 절대로 반복하지 않습니다. 두 번의 전화를 통해 얻은 결과를 명확히 할 수 있습니까? – Mark

답변

1

이 작동합니다 : 그것은 단지 마지막 값) 반환 것처럼 T는, 그래서 내 마음에 보인다

Dim userIds As IEnumerable(Of String) = {"7871"} 
     For Each i As String In userIds 
      Dim de As New DirectoryEntry("LDAP://test.net:389/DC=test,DC=net") 
      Dim LdapFilter As String = "(departmentNumber=" & i & ")" 
      Dim searcher As New DirectorySearcher(de, LdapFilter) 
      Dim result As SearchResult 
      Dim res As SearchResultCollection = searcher.FindAll() 
      For Each result In res 
       Dim item As ListViewItem = ListView1.Items.Add(i) 
       item.SubItems.Add(result.Properties("givenName")(0).ToString()) 
       item.SubItems.Add(result.Properties("cn")(0).ToString()) 
       item.SubItems.Add(result.Properties("userPrincipalName")(0).ToString()) 
      Next 
     Next 
+0

Making that :) 그런데,이 문맥에서,'userIds '변수는 좀더 적절하게'departmentNumbers'라고 이름 지어 질 것입니다. –