Прежде чем я начну, я хочу прояснить, что я могу сделать это, используя пространство имен DirectoryServices. Я просто хочу знать, как решить свой вопрос ниже, не используя DirectoryServices.
Я пытаюсь использовать DirectoryServices.AccountManagement.UserPrincipal для частичного поиска имени учетной записи пользователя. Загвоздка в том, что я хотел бы получить следующие свойства: EmailAddress, GivenName, MiddleName, SurName и т. Д. Примечание. Все свойства, которые я ищу, все представлены в UserPrincipal. вот пример использования UserPrincipal без частичного поиска имени.
using (UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, userName))
{
return user;
}
Из прочитанных мной руководств я могу выполнить частичный поиск по имени, используя следующий код:
using (UserPrincipal user = new UserPrincipal(ctx))
{
user.SamAccountName = String.Format("*{0}*", userName);
using (PrincipalSearcher searcher = new PrincipalSearcher())
{
searcher.QueryFilter = user;
return searcher.FindAll();
}
}
Проблема с этим в том, что когда я перебираю коллекцию PrincipalSearcher (поисковик), это Главный тип данных. И тип данных Principal не содержит ни одного из свойств, упомянутых выше.
Итак, мой вопрос: как я могу использовать UserPrincipal для частичного поиска имени и получить свойства, которые НЕ отображаются в типе данных Principal? Или это невозможно?