Obtenir le titre du poste en utilisant le Système.DirectoryServices.AccountManagement
J'ai utilisé avec succès la AccountManagement code pour récupérer des ANNONCES de base de l'information, mais c'est seulement le retour d'un nombre très limité d'informations à propos de l'objet retourné. Comment puis-je obtenir des informations étendues à partir d'AD à l'aide de la AccountManagement fonctionnalité. Plus précisément le Titre de l'Emploi ou d'un titre comme cela semble être appelé dans mon instance AD.
Je sais comment le faire en utilisant l'ancienne DirectoryServices mais j'aimerais savoir comment le faire en utilisant le nouvel espace de noms.
Vous devez vous connecter pour publier un commentaire.
Oui, l'ensemble par défaut des propriétés sur
UserPrincipal
est assez limitée, mais la grande partie est: il y a une jolie extensibilité histoire de en place!Vous devez définir une classe descendante de
UserPrincipal
et alors vous pouvez très facilement avoir accès à beaucoup plus de propriétés, si nécessaire.Le squelette ressemblerait à quelque chose comme ceci:
Et c'est vraiment presque tout y est! Le
ExtensionGet
etExtensionSet
méthodes vous permettent de "toucher" dans le sous-jacent d'entrée de répertoire et de saisir tous les attributs que vous pourriez être intéressé par....Maintenant, dans votre code, utilisez votre nouvelle
UserPrincipalEx
classe au lieu deUserPrincipal
:Lisez tous au sujet de la
System.DirectoryServices.AccountManagement
espace de noms et de son extensibilité de l'histoire ici:Mise à jour: désolé, voici le
UserPrincipalExSearchFilter
classe manqué qu'un dans le post original. Cela montre la capacité de prolonger les filtres de recherche, en cas de besoin:DirectoryObjectClass
de "Personne" à "l'Utilisateur". (j'espère que vous avez compris cela il y a un an)Pour Augmenter la dessus j'ai frappé vers le haut une extension de la méthode à appeler ExtensionGet. Il utilise la réflexion pour se procurer de la méthode protégée de vous éviter d'avoir à hériter. Vous devrez peut-être utiliser si vous êtes de retour UserPrincipalObjects de Groupes.Les membres, par exemple
System._comObject
dansaccountExpires
de la propriété.Il y a des moyens plus simples d'arriver à cette info. Voici la façon dont je l'ai eu au Titre de l'Emploi dans VB.NET:
(ldapEntry.GetUnderlyingObject() as DirectoryEntry)?.Properties["Title"].Value ?? "EMPTY"
De s'étendre sur les Programmierus commentaire, voici une façon simple de le faire à la volée en C#.