Нужна помощь в преобразовании кода DirectoryServices в PrincipalContext

DirectorySearcher deSearch;SearchResultCollection result;
deSearch.SearchRoot = baseResult.GetDirectoryEntry();// I know this one can be done like - PrincipalContext pContext = new PrincipalContext(ContextType.Domain, deSearch.SearchRoot.Path);
deSearch.Filter = "(&(&(objectClass=user)(objectCategory=person))(name=" + name + "))"; //???? **Not sure how to apply the filter in Principal Context**
results = deSearch.FindAll();

Пожалуйста, помогите мне в применении фильтра в принципе текст

1 ответ

Ты можешь использовать PrincipalSearcher искать конкретного пользователя.

using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
{ 
   UserPrincipal searchUser = new UserPrincipal(ctx);
   searchUser.GivenName = "Name";

   PrincipalSearcher srch = new PrincipalSearcher(searchUser);
   foreach(var found in srch.FindAll())
   {
     //found will contain the info   
   } 
}

Вы также можете использовать UserPrincipal,

using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
{
   using (UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.DistinguishedName, "DN"))
   if (user != null)
   {
      //user contains info
   }
}

Вы можете определить разные IdentityType если вы хотите искать по samAccountName или т. д.

Другие вопросы по тегам