Active directory 在自定义搜索中使用LDAP查询的Active Directory查询

Active directory 在自定义搜索中使用LDAP查询的Active Directory查询,active-directory,ldap-query,Active Directory,Ldap Query,我正在处理的域中的某些用户没有分配经理或没有职务,因此我尝试在definequery>customsearch>advanced选项卡中使用此LDAP查询创建新查询: (&(objectCategory=user)(objectClass=user))(|(!manager=*)(!title=*) 这将返回零结果,即使我知道它们存在。使用自定义搜索创建相同的搜索字符串,并且返回零结果。我尝试了这个,基于其他地方的研究,结果也为零 (&(objectCategory=perso

我正在处理的域中的某些用户没有分配经理或没有职务,因此我尝试在definequery>customsearch>advanced选项卡中使用此LDAP查询创建新查询:

(&(objectCategory=user)(objectClass=user))(|(!manager=*)(!title=*)
这将返回零结果,即使我知道它们存在。使用自定义搜索创建相同的搜索字符串,并且返回零结果。我尝试了这个,基于其他地方的研究,结果也为零

(&(objectCategory=person)(objectClass=user))(|(!manager=*)(!title=*)
我做错了什么

此外,我只想在特定文件夹及其子文件夹中搜索,是否应预先挂起:

(|(OU=Innsbruck)(OU=Totnes)(OU=Dueren))

这些文件夹位于域的正下方,每个位置都有自己的计算机、组和用户子文件夹。

您的查询无效。那个窗口并没有告诉你这一点——它只给出零结果

(&(objectCategory=person)(objectClass=user))(|(!manager=*)(!title=*)
缺少右括号,需要将OR条件放在and条件中。您还需要使用
(objectCategory=person)
,而不是
(objectCategory=user)
。您实际上不需要
(objectCategory=person)
,因为
(objectClass=user)
足以将搜索限制在用户对象上,但这并不有害

它应该是这样的:

(&(objectCategory=person)(objectClass=user)(|(!manager=*)(!title=*)))
我通常会将查询粘贴到中,突出显示匹配的括号,这样很容易找到缺少的括号。或者,您可以将其拆分为多行,以便于阅读和发现错误:

(&
    (objectCategory=person)
    (objectClass=user)
    (|
        (!manager=*)
        (!title=*)
    )
)
无论您如何搜索(通过用户和计算机UI或通过代码),一次只能搜索一个OU。查询中没有
OU
属性或任何其他属性可用于限制特定的OU

在UI中,您可以单击右上角的“浏览”来选择要搜索的OU

如果您是在代码中执行此操作,则可以做一些事情来将其限制到特定的OU:

  • 单独搜索每个OU(如果需要,可以选择将搜索范围设置为不搜索子OU),或者
  • 搜索整个域,然后查看每个结果的
    discriminatedname
    属性,并放弃您不想要的OU结果

  • 选项2可能会执行得更快,因为它的网络请求更少。

    您的查询就是无效的。那个窗口并没有告诉你这一点——它只给出零结果

    (&(objectCategory=person)(objectClass=user))(|(!manager=*)(!title=*)
    
    缺少右括号,需要将OR条件放在and条件中。您还需要使用
    (objectCategory=person)
    ,而不是
    (objectCategory=user)
    。您实际上不需要
    (objectCategory=person)
    ,因为
    (objectClass=user)
    足以将搜索限制在用户对象上,但这并不有害

    它应该是这样的:

    (&(objectCategory=person)(objectClass=user)(|(!manager=*)(!title=*)))
    
    我通常会将查询粘贴到中,突出显示匹配的括号,这样很容易找到缺少的括号。或者,您可以将其拆分为多行,以便于阅读和发现错误:

    (&
        (objectCategory=person)
        (objectClass=user)
        (|
            (!manager=*)
            (!title=*)
        )
    )
    
    无论您如何搜索(通过用户和计算机UI或通过代码),一次只能搜索一个OU。查询中没有
    OU
    属性或任何其他属性可用于限制特定的OU

    在UI中,您可以单击右上角的“浏览”来选择要搜索的OU

    如果您是在代码中执行此操作,则可以做一些事情来将其限制到特定的OU:

  • 单独搜索每个OU(如果需要,可以选择将搜索范围设置为不搜索子OU),或者
  • 搜索整个域,然后查看每个结果的
    discriminatedname
    属性,并放弃您不想要的OU结果

  • 选项#2可能会执行得更快,因为它的网络请求更少。

    在我看来,该筛选器不符合RFC 4515:LDAP搜索筛选器的字符串表示形式。 可能是广告,并且您正在使用的工具正在接受它,但是
    而不是
    过滤器应采用
    (!(manager=*))
    的形式


    (&(objectCategory=person)(objectClass=user)(|(!(manager=*))(!(title=*))

    在我看来,该筛选器似乎不符合RFC 4515:搜索筛选器的LDAP字符串表示形式。 可能是广告,并且您正在使用的工具正在接受它,但是
    而不是
    过滤器应采用
    (!(manager=*))
    的形式


    (&(objectCategory=person)(objectClass=user)(|)(!(manager=*)(!(title=*))

    我发现我把结束括号放错了位置-我想我需要结束“&”而不是整个查询。对objectCategory=user和objectCategory=person之间的区别有何看法?关于“OU=…”的用法?对不起!我没有注意到
    objectCategory=user
    。我只是盲目地复制和粘贴:)但这行不通。我错过了你问题的最后一部分。我更新了这两个问题的答案。我发现我把结束括号放错了位置-我想我需要结束“&”而不是整个查询。对objectCategory=user和objectCategory=person之间的区别有何看法?关于“OU=…”的用法?对不起!我没有注意到
    objectCategory=user
    。我只是盲目地复制和粘贴:)但这行不通。我错过了你问题的最后一部分。我更新了这两个问题的答案。