You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

合并LDAP查询未返回预期结果,求问题排查

问题分析与解决方案

你的查询问题出在LDAP过滤器的逻辑结构错误,没有正确组合「OR」和「AND」的优先级。

你的需求是:

  • 计算机对象,且
  • (操作系统包含server 或 操作系统包含Enterprise),且
  • 账号未禁用

但你写的两个合并查询都不符合这个逻辑:

  1. 第一个合并查询的过滤器是:

    (&(objectclass=computer)(operatingSystem=*server*)(|(operatingSystem=*Enterprise*))(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
    

    这个逻辑是「计算机 + 含server的系统 + 含Enterprise的系统 + 未禁用」,本质是要求操作系统同时包含server和Enterprise,不存在这样的机器,所以返回空结果。

  2. 第二个写法直接用&连接两个操作系统条件,同样是要求系统同时满足两个关键词,自然也没有结果。

正确的LDAP过滤器写法

需要把「操作系统包含server 或 Enterprise」用|包裹作为一个整体,再和其他条件用&组合:

Get-ADObject -searchbase "DC=DOMAIN,DC=LOCAL" -ldapfilter "(& (objectclass=computer) (!(userAccountControl:1.2.840.113556.1.4.803:=2)) (| (operatingSystem=*server*) (operatingSystem=*Enterprise*)) )" | Sort-Object Name

解释:

  • (& ...) 表示所有内部条件必须同时满足
  • (| (operatingSystem=*server*) (operatingSystem=*Enterprise*)) 是独立逻辑块,表示满足其中任意一个操作系统条件即可
  • 外层的&把「计算机对象」「未禁用」「操作系统符合任一条件」三个要求绑定,完全匹配你的需求。

内容的提问来源于stack exchange,提问作者Charles Waters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 22:42:52