首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于多个指南的DirectorySearcher

用于多个指南的DirectorySearcher
EN

Stack Overflow用户
提问于 2013-07-02 20:59:09
回答 2查看 836关注 0票数 1

我有Active Directory用户的Guid列表,我需要为特定报告加载这些用户的一组属性。要做到这一点,如果我们为每个Guid进行绑定,那么这将是一个代价高昂的绑定。无论使用DirectorySearcher,我们是否可以提供多个Guid(比如1000)作为筛选器并加载属性?

EN

回答 2

Stack Overflow用户

发布于 2013-07-02 22:12:46

目前,我不知道如何在C#中以编程方式完成此操作,但如果您想编写一个原始的LDAP查询,您可以决定是否通过AND或OR组合多个参数。为此,您必须打开一个组(使用普通的大括号"("),并定义该组中的所有元素应该是ANDed "&"还是ORed "|"

下面是一个示例:

代码语言:javascript
复制
(|(msExchMailboxGuid=\AD\26\05\EA\5D\C9LD\696\11\40\21\9BSM)
  (msExchMailboxGuid=i8\162\97\39\B0G\BA\ABR\34\AD\1F\AB\9C)
  (msExchMailboxGuid=\A3\99\AC\3A\2B\E8\82F\AB\19\FF\29h2W\0E))
票数 0
EN

Stack Overflow用户

发布于 2013-08-08 18:43:56

您应该将GUID转换为八位字节字符串,然后将其插入ldap筛选器,如下所示:

代码语言:javascript
复制
Guid guid = new Guid(); // your guid value

byte[] byteGuid = guid.ToByteArray();
string octetStr = byteGuid.Aggregate("", (current, b) => current + (@"\" + b.ToString("x2")));
string query = "(&(edsaapoguid=" + octetStr + ")(objectClass=user))";
string path = "LDAP://" + yourDomain.com + "/" + "OU=rootOU,DC=yourDomain,DC=com";
DirectoryEntry searchRoot = new DirectoryEntry(path, yourDomain + @"\" adminName, password);
DirectorySearcher searcher = new DirectorySearcher(searchRoot, query)
         {
            SearchScope = SearchScope.Subtree
         };
SearchResultCollection results = searcher.FindAll();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17426311

复制
相关文章

相似问题

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