【问题标题】:LDAP: Query syntaxLDAP:查询语法
【发布时间】:2019-06-24 08:45:05
【问题描述】:

我基本上已经忘记了关于查询 AD 的所有知识,现在我需要检索一个特定部门 (DAAS) 中的用户列表。我已经确定有一个名为 DAAS 的组织单位。我只是不知道如何将列表限制为该 OU。

此字符串有效,但检索整个组织;

strQueryDL = "<LDAP://" & strDefaultNamingContext & ">;(&(objectCategory=person)(objectClass=user));distinguishedName;subtree"

这个字符串不起作用;

strQueryDL = "<LDAP://" & strDefaultNamingContext & ">;(&(objectCategory=person)(objectClass=user)(OU=DAAS));distinguishedName;subtree"

这个字符串也不起作用;

strQueryDL = "<LDAP://OU=DAAS" & strDefaultNamingContext & ">;(&(objectCategory=person)(objectClass=user));distinguishedName;subtree"

那个该死的 OU 在这个字符串中属于哪里?

谢谢! 直流

【问题讨论】:

    标签: active-directory ldap querying


    【解决方案1】:

    条目不必包含 OU 属性,因为它位于其 DN 中的某个位置。它们只需要在其中包含其 RDN 值。如果这没有意义,请参见下文。

    你可以找出所有 dn 以 ou=daas with 开头的子树的 DN

    strQueryDL = "<LDAP://" & strDefaultNamingContext & ">;(&(objectCategory=organizationalunit)(OU=DAAS));distinguishedName;subtree"
    

    一旦你有了它,你就可以在你有 strDefaultNamingContext 的地方使用那个 DN。

    还有一个可扩展的搜索表单,可以指定针对 DN 而不是属性执行搜索,但我不知道它是否适用于 AD。如果它确实在 AD 中工作,那么该形式将是:

    strQueryDL = "<LDAP://" & strDefaultNamingContext & ">;(&(objectCategory=person)(objectClass=user)(OU:dn:=DAAS));distinguishedName;subtree"
    

    一个 DN 由一堆 DN 组件组成。每个组件都是一个属性值对,通过= 连接。您可以使用+ 连接同一级别的组件,但通常您只需使用, 链接它们。同一级别的组件是无序的。从 DN 开始到 , 的位是 RDN,必须在条目上表示。 DN 中的其他所有内容都是上级 DN。如果条目不是其树中的顶级条目,则上级 DN 必须由其自己的条目表示,但这些值都不需要在从属条目上。

    这究竟意味着什么是另一个问题,之前已经被问过多次,我正在查看不同的问题以找出最佳答案......或者我是否应该提交答案。完成搜索后,我将用链接替换此文本。

    【讨论】:

    • 谢谢!我不明白第一句话(它太长了),但是你给我的搜索字符串有效。它实际上给了我 8 个结果,所以我必须弄清楚要使用哪一个,但我到了那里。令人惊讶的是,在 DAAS 下有一个 Users OU,但在 Users 下也有一个 DAAS OU。我在别处找到的一个脚本向我展示了这一点。
    【解决方案2】:

    你在最后一个的轨道上是正确的,但可能只是在 OU 之后缺少一个逗号(如果 OU 位于域的根目录)。

    但如果您已经知道 OU 的 distinguishedName,那么您可以直接使用它。关键是,字符串最终应该看起来像这样(假设 OU 的 DN 为 domain.com/DAAS):

    strQueryDL = "<LDAP://OU=DAAS,DC=domain,DC=com>;(&(objectCategory=person)(objectClass=user));distinguishedName;subtree"
    

    Ed Grimm 的回答向您展示了如何找到 OU 本身,如果您还不知道 OU 的 DN,这将帮助您获得它。

    【讨论】:

    • 谢谢!当然,关于缺少的逗号,你是对的,但仅仅纠正这还不够。我缺少构建搜索字符串的必要信息。 Ed Grimm 的回答解决了这个问题。所以,我能够克服这个障碍。
    猜你喜欢
    • 2022-12-08
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    相关资源
    最近更新 更多