首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AD PrincipalSearcher:搜索不包含某些值的属性

AD PrincipalSearcher:搜索不包含某些值的属性
EN

Stack Overflow用户
提问于 2014-12-23 16:18:50
回答 1查看 3.7K关注 0票数 4

当构建过滤器以查找具有特定值的对象时,主体搜索器似乎做得很好。如果没有呢?例如,我如何构建一个过滤器来排除每个名字中有"Joe“的人。下面的代码不起作用。

代码语言:javascript
复制
        PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
        UserPrincipal qbeUser = new UserPrincipal(ctx);
        PrincipalSearcher srch = new PrincipalSearcher(qbeUser);

         //this is the problem line.  How to format to exclude values with Joe?
         qbeUser.Name != "*Joe*"; 

        srch.QueryFilter = qbeUser;
        foreach (var found in srch.FindAll())
         { do something to non Joe users... }

……

EN

回答 1

Stack Overflow用户

发布于 2014-12-25 19:57:18

似乎用PrincipalSearcher是不可能的。

有两种可能的解决办法:

  1. 使用PrincipalSearcher在客户端获取所有用户并进行筛选 PrincipalContext ctx =新PrincipalContext(ContextType.Domain);UserPrincipal qbeUser =新UserPrincipal(ctx);PrincipalSearcher srch =新PrincipalSearcher(qbeUser);srch.QueryFilter = qbeUser;foreach (var在srch.FindAll()中找到){//过滤掉名为"Joe“的用户。
  2. 使用DirectorySearcher "(&(objectCategory=person)(objectClass=user)(!(name=*Joe*)))";de =新DirectoryEntry (“LDAP: // domain.com/dc=DirectoryEntry,dc=com","user","pwd");DirectorySearcher srch =新DirectorySearcher(de);srch.Filter =DirectoryEntry srch.SearchScope = SearchScope.Subtree;//添加属性DirectoryEntry使用(SearchResultCollection结果= srch.FindAll()) { foreach (SearchResult结果中的结果){ string dn = result.Properties"distinguishedName“作为字符串;Console.WriteLine("- {0}",dn);}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27624113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档