사용자 목록과 활성 디렉터리 그룹 내에서 사용자에 대한 일부 속성을 가져 오려고합니다. 그것은 아주 비효율적으로 보이지만,특정 Active Directory 메일 그룹의 사용자 목록
Dim adGroup As New DirectoryEntry("LDAP://CN=MyGroup,OU=Groups,OU=Accounts,OU=All,DC=domain,DC=com")
Dim adMembers As Object
Dim objUser As ActiveDirectoryUser
Dim objUserList As New List(Of ActiveDirectoryUser)
Dim directoryEntry As DirectoryEntry
adMembers = adGroup.Invoke("Members", Nothing)
For Each adMember As Object In CType(adMembers, IEnumerable)
directoryEntry = New DirectoryEntry(adMember)
objUser = New ActiveDirectoryUser
objUser.UserId = directoryEntry.Properties.Item("sAMAccountName").Value.ToString()
objUser.Contract = directoryEntry.Properties.Item("ou").Value.ToString()
objUser.LastName = directoryEntry.Properties.Item("sn").Value.ToString()
objUser.FirstName = directoryEntry.Properties.Item("givenName").Value.ToString()
objUser.Email = directoryEntry.Properties.Item("mail").Value.ToString()
objUserList.Add(objUser)
Next
첫 번째 조각이 작동합니다
가 업데이트 : 여기
내가 현재 가지고있는 두 가지 방법이 있습니다. 내 메모리 사용량 올라 타고 등반하고 올라간다 this 오류가 발생했습니다, 그것은 고칠 수있는 것처럼 보이지만. 두 번째 방법은 :
Dim results As SearchResultCollection
Dim directoryEntry2 As New DirectoryEntry("LDAP://DC=domain,DC=com")
Dim directorySearcher As New DirectorySearcher(directoryEntry2)
directorySearcher.PageSize = 1000
directorySearcher.Filter = "(&(objectCategory=person)" & _
"(objectClass=user)" & _
"(memberOf=CN=MyGroup,OU=Groups,OU=Accounts,OU=All,DC=domain,DC=com))"
directorySearcher.PropertiesToLoad.Add("ou")
directorySearcher.PropertiesToLoad.Add("sn")
directorySearcher.PropertiesToLoad.Add("givenName")
directorySearcher.PropertiesToLoad.Add("sAMAccountName")
directorySearcher.PropertiesToLoad.Add("mail")
results = directorySearcher.FindAll
결과 카운트 I 홀수 검색 애플리케이션을 실행할 때마다 다를 것으로 보인다. 이것이 사용자를 되 찾을 수있는 확실한 방법인지 아니면 내 검색에서 무언가를 수정해야하는지 잘 모르겠습니다.
멤버 속성을 반복하면 나에게 가까워졌습니다. 필자는 여전히 멤버 개체에서 속성을 가져와야합니다 (이름, 전자 메일 등). 귀하의 예제에서 groupmemberDN을 특정 객체 유형으로 형변환하여 속성을 가져올 수 있다고 가정합니다. –
지금까지 도와 주셔서 감사합니다. 두 가지 질문이 있습니다. 첫째, 당신은 디렉토리 검색자를 사용하여 회원을 얻을 수 없다고 말했으므로, 업데이트 된 예제에서 나는 할 수 있음을 알았습니다. 그래서 당신이 그곳에서 의미하는 것을 당신이 정교 할 수 있기를 바랬습니다. 둘째, 디렉터리 검색기를 사용하여 결과를 얻을 수 있지만 모음에있는 개수는 내 응용 프로그램을 실행할 때마다 달라질 수 있습니다. 일관성이 있어야합니다 (아무도 현재 그룹에 추가되지 않았습니다). –
@ Ek0nomik : ** 그룹이 ** 열거 할 수있는 광고의 컨테이너가 아니기 때문에 ** 모든 구성원을 찾기 위해 그룹을 열거 할 수 없습니다. 멤버를 자식 객체로 포함하지 않습니다. 그러나 디렉터리 분기를 열거하고 특정 그룹의 구성원 인 모든 사용자를 찾을 수 있습니다. –