Ich habe eine AD-Abfrage und Eigenschaften manuell hinzufügen, aber ich möchte die Möglichkeit, alle Active Directory-Eigenschaften, die ein Benutzer für den Sucher haben kann.Active Directory-Abfrage Problem
Dies ist die aktuelle Art, wie ich es tue, was schön und gut funktioniert ...
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
Also dachte ich, ich würde versuchen, sie alle zu addieren, um ein Benutzer zu wählen, und wählen könnte, welche Attribute sie wollten ... also kam ich auf diese Idee.
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
aber ich bin für die meisten von ihnen die folgende Störung zu erhalten ..
Conversion from type 'ActiveDirectorySchemaProperty' to type 'string' is not valid.
Irgendwelche Hinweise auf das, was ich vermisst habe? Mir ist klar, dass ADSP nicht zum Eingeben von Zeichenfolge verwendet werden kann, aber ich bin nicht sicher, wie ich es beheben kann. Ich bin sicher, einige von ihnen sind Boolean, Ints, Datetime.
Gleicher Fehler, obwohl ich es gefunden habe, wenn ich nichts lade, zieht es automatisch alles. Das beantwortet meine eigene Frage. – TonyW
Für was es wert ist, funktioniert es gut für mich ... getestet sowohl auf VB.Net und C# mit VS2015. – objectNotFound
Wenn ich Ausnahmen erhalte, 40% von ihnen scheitern, siehst du aus, als ignorierst du sie. – TonyW