2016-05-05 20 views
1

Ich habe einen Active Directory-Benutzer, der Benutzerdetails mithilfe von UserPrincipal-Objekten abrufen kann. Ich verwende System.DirectoryServices und System.DirectoryServices.AccountManagement und es greift auf AD über einen Kontext zu.So erhalten Sie ein UserPrincipal-Objekt für den Manager aus dem UserPrincipal-Objekt des Mitarbeiters

Allerdings muss ich auch den Manager des Benutzers als separates UserPrincipal Objekt erhalten. Was wäre der direkteste Weg, dies zu tun?

ich habe versucht, folgende aber leider ist die Besetzung nicht funktionieren:

DirectoryEntry directoryEntry = (DirectoryEntry)userPrincipal.GetUnderlyingObject(); 
UserPrincipal manager = (UserPrincipal)directoryEntry.Properties["manager"][0]; 

ich es gehofft, eine UserPrincipal Eigenschaft UsersManager innerhalb jedes Objekt aufgerufen Userprincipal sein würde, aber ich bin nicht auf dieses so ich finden Ich rate, dass es so etwas nicht gibt.

Danke!

Antwort

1

Das Manager-Attribut gibt Ihnen den definierten Namen des Kontos des Managers, das nur eine Zeichenfolge ist. Also müssen Sie das Konto des Managers mit diesem DN nachschlagen.

Dies könnte funktionieren (vorausgesetzt, Sie bereits ein context Objekt haben):

UserPrincipal manager = UserPrincipal.FindByIdentity(context, IdentityType.DistinguishedName, directoryEntry.Properties["manager"][0].ToString()); 
+0

Dass man nicht funktioniert hat, aber dieses tat Userprincipal Manager = UserPrincipal.FindByIdentity (Kontext, directoryEntry.Properties [ "Manager"] [0] .ToString()); so akzeptiere ich Ihre Antwort und danke :) –

+0

Nicht getestete Code :) Ich bin froh, dass es geholfen hat. Ich werde meine Antwort aktualisieren. –