2012-04-04 4 views
2
gesamter Domain suchen

Ich verstehe, wie einen Benutzer zu finden, die genaue LDAP URLWie für einen Benutzer in AD mit VB.NET

LDAP://domain/CN=Username,OU=Users,DC=domain,DC=com 

aber was, wenn ich ohne einen Blick in den jeweiligen einen Benutzer finden muß OU. Wie suche ich die gesamte Domain?

Antwort

0

Lassen Sie die OU-Struktur einfach aus dem LDAP-Pfad weg. Dadurch wird die Suche im Stammverzeichnis der Domäne festgelegt.

LDAP://DC=domain,DC=com 

und einen Filter verwenden, um die spezifischen Benutzer zu finden:

(&(objectClass=User)(cn=" & susername & ")) 
+0

Beachten Sie, dass der Suchbereich 'sub' in diesem Beispiel sein sollte. –

+0

Also habe ich den Vorschlag von Tom Pickles verwendet, und ich kam auf diese Idee – Pickle

3

Wenn Sie .NET 3.5 oder höher verwenden, sollten Sie die PrincipalSearcher Klasse check out:

' create your domain context 
Dim ctx As New PrincipalContext(ContextType.Domain) 

' define a "query-by-example" principal - here, we search for a UserPrincipal 
' and with the first name (GivenName) of "Bruce" and a last name (Surname) of "Miller" 
Dim qbeUser As New UserPrincipal(ctx) 
qbeUser.GivenName = "Bruce" 
qbeUser.Surname = "Miller" 

' create your principal searcher passing in the QBE principal  
Dim srch As New PrincipalSearcher(qbeUser) 

' find all matches 
For Each found As var In srch.FindAll() 
    ' do whatever here - "found" is of type "Principal" - it could be user, group, computer.....   
Next 

Wenn Sie noch nicht wissen, lesen Sie unbedingt den MSDN-Artikel Managing Directory Security Principals in the .NET Framework 3.5, der zeigt, wie Sie die neuen Funktionen in System.DirectoryServices.AccountManagement optimal nutzen können. Oder sehen Sie sich den Namespace MSDN documentation on the System.DirectoryServices.AccountManagement an.

Natürlich, je nach Bedarf, können Sie andere Eigenschaften auf, dass „query-by-Beispiel“ Benutzerprinzipal angeben Sie erstellen:

  • DisplayName (typisch: Vorname + Raum + Nachname)
  • SAM Account Name - Ihr Windows/AD-Kontonamen
  • User Principal Name - Ihr "[email protected]" Artnamen

Sie spe können cify eine der Eigenschaften auf UserPrincipal und verwenden Sie diese als "Query-by-Beispiel" für Ihre PrincipalSearcher.

Oder wenn Sie nur einen bestimmten Benutzer finden wollen - versuchen Sie dies:

' find a user 
Dim user As UserPrincipal = UserPrincipal.FindByIdentity(ctx, "SomeUserName") 

' do something here....  
If user IsNot Nothing Then 
    . ..... 
End If 
Verwandte Themen