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

修改PowerShell LDAPFilter添加enabled=true时的异常问题

解决AD查询过滤器添加启用账户条件的问题

问题核心在于LDAP过滤器不支持enabled属性——你用的是PowerShell比较语法,但-LDAPFilter参数要求标准LDAP格式过滤器,两者语法不兼容。

方案1:修正LDAP过滤器写法

AD账户的启用状态由userAccountControl属性的位标志控制,禁用账户会设置位2(值为2),要筛选启用账户,需排除该位被设置的对象。完整过滤器代码如下:

$filter = "(&(msExchMailboxguid=*)" + 
          "(facilityID=12345)" + 
          "(!(userAccountControl:1.2.840.113556.1.4.803:=2))" + 
          "(|(jobCodeID=0001)" + 
          "(jobCodeID=0002)" + 
          "(jobCodeID=0003)" + 
          "(jobCodeID=0004)" + 
          "(jobCodeID=0005)" + 
          "(jobCodeID=0006)))"

Get-ADUser -SearchBase "dc=acme,dc=corp" -LDAPFilter $filter

其中(!(userAccountControl:1.2.840.113556.1.4.803:=2))是LDAP位匹配语法,作用是排除所有被禁用的账户。

方案2:改用PowerShell原生Filter参数

若无需严格使用LDAP过滤器,推荐用Get-ADUser的-Filter参数,它支持PowerShell风格的直观语法,直接用enabled -eq $true即可:

$filter = {
    msExchMailboxguid -ne $null -and
    facilityID -eq '12345' -and
    enabled -eq $true -and
    (jobCodeID -eq '0001' -or
     jobCodeID -eq '0002' -or
     jobCodeID -eq '0003' -or
     jobCodeID -eq '0004' -or
     jobCodeID -eq '0005' -or
     jobCodeID -eq '0006')
}

Get-ADUser -SearchBase "dc=acme,dc=corp" -Filter $filter

这种写法更易读,也能避免括号匹配或语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:31:09