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

AD LDS环境中查询禁用用户失败的原因咨询

AD LDS中服务器端过滤禁用用户失效的原因解析

1. Enabled属性无法用于服务器端过滤的本质原因

Enabled是PowerShell ActiveDirectory模块提供的计算属性,并非AD LDS服务器端原生存储的属性。它是模块在本地通过解析相关账户控制属性计算得出的结果,因此:

  • 直接在Get-ADUser的-Filter参数中使用Enabled -eq '$false'会报错,因为服务器端无法识别这个非原生属性,且传入的字符串'$false'与属性的布尔类型不匹配(即使改成$false,服务器端依然不支持)。
  • 只有将用户数据拉取到本地后,通过Where-Object才能基于这个计算属性过滤。

2. msDS-UserAccountDisabled无法服务器端过滤的原因

msDS-UserAccountDisabled是AD的构造属性,这类属性不会被持久化存储在目录中,而是在客户端发起查询时由服务器实时计算生成。AD LDS的LDAP查询引擎不支持直接对构造属性进行服务器端过滤,因此你用-Filter "msDS-UserAccountDisabled -eq '$true'"或对应的LDAP过滤器都无法得到预期结果,必须本地拉取后再过滤。

3. userAccountControl按位匹配过滤器失效的可能原因

userAccountControl:1.2.840.113556.1.4.803:=2是匹配userAccountControl中包含ACCOUNTDISABLE(值为2)标志的标准LDAP过滤器,在AD中生效但AD LDS中失效,通常有两种可能:

  • AD LDS用户对象未启用userAccountControl属性:部分AD LDS实例的用户类可能未默认启用该属性,或者你的分区配置中未开启相关账户控制特性。
  • 权限或实例配置限制:你的AD LDS服务账户可能没有读取userAccountControl属性的权限,或者实例未启用支持按位匹配的LDAP扩展功能。

高效替代方案

如果不想全量拉取用户,可通过指定必要属性减少传输数据量:

  • 基于msDS-UserAccountDisabled过滤:
    Get-ADUser -Server 'ADLDS' -SearchBase "Path" -Filter * -Properties msDS-UserAccountDisabled | Where-Object { $_.msDS-UserAccountDisabled -eq $true }
    
  • 若userAccountControl可用,本地按位判断:
    Get-ADUser -Server 'ADLDS' -SearchBase "Path" -Filter * -Properties userAccountControl | Where-Object { ($_.userAccountControl -band 2) -eq 2 }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 12:21:11