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

PowerShell:获取AD用户至变量后二次过滤失效问题求助

解决AD用户二次筛选无效的问题

问题根源在于Get-AdUser默认返回的属性集不包含PasswordNeverExpires和PasswordExpired,你存入$users的对象里根本没有这两个属性,直接用Where-Object自然无法筛选。

以下是两种正确的二次过滤方法:

方法一:首次查询时就包含目标属性(推荐)

第一次获取用户时,通过-Properties参数指定需要的属性,后续直接基于$users筛选即可:

# 获取所有启用状态的AD用户,同时加载密码相关属性
$users = Get-AdUser -Filter { Enabled -eq $true } -Properties PasswordNeverExpires, PasswordExpired

# 二次筛选符合条件的用户
$targetUsers = $users | Where-Object { 
    $_.PasswordNeverExpires -eq $false -and 
    $_.PasswordExpired -eq $false 
}

方法二:为已有的$users补充属性

如果已经提前获取了不含目标属性的$users集合,可以批量补充属性后再筛选,避免全量重复查询:

# 假设$users是已获取的启用用户集合(仅含默认属性)
$targetUsers = $users | 
    Get-AdUser -Properties PasswordNeverExpires, PasswordExpired |
    Where-Object { 
        $_.PasswordNeverExpires -eq $false -and 
        $_.PasswordExpired -eq $false 
    }

注意

方法一的效率更高,因为只需要向AD发起一次查询请求;方法二适合你已经持有$users集合的场景,批量查询比逐个处理更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:34:53