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

PowerShell查询AD已启用且密码未过期用户筛选异常解决方法

问题原因

筛选完全失效的核心是类型匹配错误:
PasswordExpired是AD返回的原生布尔(Boolean)类型属性,取值只能是PowerShell布尔常量$true/$false,你在筛选时给判断值加了双引号,写成了字符串类型的"True"/"False"。
PowerShell做相等判断时会优先按左侧值的类型做隐式转换:当布尔值和非空字符串做比较时,无论字符串内容是什么,都会被转换为$true,相当于你的筛选条件恒成立,所以不管写"True"还是"False",返回结果都完全一致。
另外你命令中用-properties *拉取用户所有属性的写法效率极低,用户量大时查询会非常慢,只需要声明实际用到的属性即可。

正确查询命令

筛选「账户启用、密码未过期」用户的正确命令如下:

Get-ADUser -Filter { Enabled -eq $true } -Properties DisplayName, EmailAddress, PasswordExpired, PasswordNeverExpires |
    Where-Object { $_.PasswordExpired -eq $false } |
    Select-Object DisplayName, EmailAddress, PasswordExpired |
    Sort-Object DisplayName
补充说明
  • 如果你希望把设置了密码永不过期的用户也排除在结果外,就在Where-Object的判断条件里加一条-and $_.PasswordNeverExpires -eq $false即可;如果需要包含这类用户,保留现有写法就行。
  • 所有布尔值判断不要给$true/$false加引号,否则会再次触发类型不匹配的筛选失效问题。
  • 只在-Properties参数后声明你需要用到的非默认属性,不要拉取全量属性,能大幅提升查询速度。
  • 如果需要限制返回结果数量,加上-ResultSetSize 数量参数即可,要返回全部符合条件的用户直接删掉这个参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:21:22