2013-08-28 2 views
0

저는 VB에서 매우 새로 워서 도움을 요청하고 싶습니다. 이 코드에 검색 기능을 추가하고 싶습니다. 누군가가 sAMaccountname을 검색하고이 사용자가 이메일을 다시받을 것이라고 가정 해 봅시다. 정말 광고에서 속성을 사용하여 작업하는 방법을 모르겠다. 그래서 내가 가지고있는 것만이 (나는 결과가 무엇인지를 찾기가 정말 쉽다.)). 전자 메일로 samaccountname을 사용하는 방법을 알게되면 다른 것들도 계속할 수 있다고 생각합니다. 고맙습니다. 이 같은VB.NET에서 sAMAccountName 검색

Imports System.DirectoryServices 
Imports System.DirectoryServices.ActiveDirectory 

Public Class Form1 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     Dim domains As DomainCollection = Forest.GetCurrentForest.Domains 
     For Each domain As Domain In domains 
      'MessageBox.Show(domain.Name) 
      ComboBox2.Items.Add(domain.Name) 
     Next 
    End Sub 

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 

     Dim domain As DirectoryEntry = New DirectoryEntry("LDAP://ourdomain.com/OU=Users,OU=Czech Republic,OU=TEAD,DC=eu,DC=ourcompany,DC=com") 
     For Each child As DirectoryEntry In domain.Children 
      ComboBox1.Items.Add(child.Name) 
     Next 
    End Sub 

End Class 

답변

0

뭔가 당신이 원하는 일을해야합니다

Public Shared Function FindEmailsFromSamAccountName(ByVal samAccountName As String) As String 

    Dim ctx As New PrincipalContext(ContextType.Domain) 

    Dim qbeUser As New UserPrincipal(ctx) 
    qbeUser.SamAccountName = samAccountName 
    qbeUser.Enabled = True 

    Dim srch As New PrincipalSearcher(qbeUser) 
    For Each foundUser In srch.FindAll 
     Dim up As UserPrincipal = CType(foundUser, UserPrincipal) 
     Return up.EmailAddress 
    Next 
    Return "" 
End Function 

그냥 찾은 첫 번째를 반환합니다. 여기에 몇 가지 오류 검사를 추가해야합니다.

의 시작 또는 끝에 "*"를 추가하여 검색을 확장하여 더 많은 일치 항목을 반환하면 와일드 카드 검색이 가능합니다.

+0

내가 필요로하는대로 환상적이고 정확하게 작동합니다. 감사합니다. 더 많은 AD 도메인을 사용하고 있다면, 모든 결과를 얻는 방법에 대해 더 궁금한 점이 있으십니까? – vonTossis

관련 문제