나는 AD 쿼리를 사용하고 속성을 수동으로 추가하지만 사용자가 검색 자에게 가질 수있는 모든 활성 디렉토리 속성을 추가 할 수 있어야합니다.액티브 디렉토리 쿼리 문제
이 벌금과 멋쟁이 작동 내가 그것을하고있어 현재의 방법이다는 ...
Dim de As New DirectoryEntry
If getset.impersonationset = True Then
If getset.specificcontainerchecked = True Then
de.Path = "LDAP://" & getset.containerstring()
de.Username = getset.usernameset
de.Password = getset.passwordset
Else
de.Path = "LDAP://" & getset.DomainName()
de.Username = getset.usernameset
de.Password = getset.passwordset
End If
Else
If getset.specificcontainerchecked = True Then
de.Path = "LDAP://" & getset.containerstring()
Else
de.Path = "LDAP://" & getset.DomainName()
End If
End If
Dim deSearch As New DirectorySearcher()
deSearch.SearchRoot = de
deSearch.Filter = "(&(objectClass=User)(objectCategory=Person))"
deSearch.PageSize = 1000
deSearch.SizeLimit = 1000
If getset.specificcontainerchecked = True Then
If getset.subcontainers = True Then
deSearch.SearchScope = SearchScope.Subtree
ElseIf getset.subcontainers = False Then
deSearch.SearchScope = SearchScope.OneLevel
End If
ElseIf getset.specificcontainerchecked = False Then
deSearch.SearchScope = SearchScope.Subtree
End If
deSearch.PropertiesToLoad.Add("sAMAccountName") 'Account Name
deSearch.PropertiesToLoad.Add("givenName") 'Display Name
deSearch.PropertiesToLoad.Add("sn") 'Load Users first name
deSearch.PropertiesToLoad.Add("description") 'Description
deSearch.PropertiesToLoad.Add("userAccountControl") 'Distinguished Name
deSearch.PropertiesToLoad.Add("lastLogonTimestamp") 'Last Login
deSearch.PropertiesToLoad.Add("whenCreated") 'Created Date
deSearch.PropertiesToLoad.Add("whenChanged") 'Changed Date
deSearch.PropertiesToLoad.Add("distinguishedName")
deSearch.PropertiesToLoad.Add("msNPAllowDialin")
deSearch.PropertiesToLoad.Add("cn") 'Wiles, Anthony
deSearch.PropertiesToLoad.Add("co") 'United States
deSearch.PropertiesToLoad.Add("company") 'Company
deSearch.PropertiesToLoad.Add("l") 'Alpharetta
deSearch.PropertiesToLoad.Add("mail") 'Email
deSearch.PropertiesToLoad.Add("st") 'State
그래서 나는 내가 그렇게 사용자가 선택하고 속성을 선택할 수있는, 그들 모두를 추가 할 것이라고 생각 그들은 원했어 ... 그래서 나는 이것을 생각해 냈다.
Dim currSchema As ActiveDirectorySchema = ActiveDirectorySchema.GetCurrentSchema()
Dim collection As ActiveDirectorySchemaClass = currSchema.FindClass("user")
Dim properties As ReadOnlyActiveDirectorySchemaPropertyCollection = collection.GetAllProperties()
Dim enumerator As IEnumerator = properties.GetEnumerator()
While enumerator.MoveNext()
Try
deSearch.PropertiesToLoad.Add(enumerator.Current)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End While
하지만 난 그들 대부분 다음과 같은 오류를 받고 있어요 .. 저는 누락 된 사항에
Conversion from type 'ActiveDirectorySchemaProperty' to type 'string' is not valid.
모든 단서? ADSP 형식 문자열을 캐스팅 할 수 없다는 것을 알고 있지만 그것을 수정하는 방법을 잘 모르겠습니다. 나는 그들 중 일부가 부울, ints, datetime입니다 확신합니다.
동일한 오류가 발생합니다. 아무 것도로드하지 않으면 동일한 오류가 발생하지만 자동으로 모든 항목을 가져옵니다. 그런 종류의 대답은 내 자신의 질문입니다. – TonyW
그것이 나를 위해 잘 작동하는 가치에 대한 ... VB.Net 및 C# VS2015 사용하여 테스트했습니다. – objectNotFound
내가 예외를 잡을 때, 40 %가 실패하고, 당신은 그들을 무시하는 것처럼 보입니다. – TonyW