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

多条件查询AD用户脚本求助:查询启用且超365天未登录用户无结果

解决AD启用用户超过365天未登录的脚本问题

我来帮你排查下问题所在,你的脚本没返回结果主要有几个关键错误,咱们一步步修正:

问题分析

  1. 启用状态判断颠倒:你要找的是启用状态的用户,但原脚本里写的是$_.Enabled -eq $False,这会筛选出已禁用的账户,和需求完全相反。
  2. LastLogonDate匹配逻辑错误:用-eq去匹配(Get-Date).AddDays(-365),意味着你只找最后登录时间恰好等于一年前此刻的用户,这种情况几乎不可能存在,应该筛选最后登录时间早于或等于一年前的用户。
  3. 未处理从未登录的账户:有些启用的AD账户可能从未登录过,它们的LastLogonDate值为$null,这部分用户也符合“超过365天未登录”的条件,需要纳入筛选。
  4. 遗漏属性调用:默认Get-ADUser不会返回LastLogonDate属性,必须显式指定才能获取这个字段。

修正后的脚本

Get-ADUser -Filter * -Properties LastLogonDate | 
    Where-Object {
        $_.Enabled -eq $True -and 
        ($_.LastLogonDate -le (Get-Date).AddDays(-365) -or $_.LastLogonDate -eq $null)
    } |
    Select-Object Name, SamAccountName, Enabled, LastLogonDate

代码说明

  • -Properties LastLogonDate:显式指定获取LastLogonDate属性,这是原脚本遗漏的关键步骤。
  • $_.Enabled -eq $True:确保只保留处于启用状态的账户。
  • $_.LastLogonDate -le (Get-Date).AddDays(-365):筛选出最后登录时间在一年前及更早的用户;-or $_.LastLogonDate -eq $null补充从未登录过的启用账户,覆盖所有符合条件的场景。
  • Select-Object:输出关键信息,让结果更清晰易读。

你可以直接运行这个修正后的脚本,应该就能得到符合需求的用户列表了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:11:40