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

如何使用PowerShell查询指定周期内的活跃AD域用户

AD用户8个月活跃周期筛选统计方案

实现逻辑说明

要实现持续活跃满8个月的启用AD用户筛选、按父容器分组统计,核心是补充用户活跃时间属性的筛选逻辑:

  • 常规AD批量统计场景下,使用LastLogonDate属性判定用户活跃状态,该属性为域内复制的用户最近登录时间,满足绝大多数统计精度要求
  • 8个月活跃阈值通过当前时间倒推8个月计算,筛选最后登录时间不早于该阈值、且有过登录记录的启用账号,即为持续活跃满8个月的用户
  • 完全保留原有代码的父容器提取、分组统计、文件导出逻辑,不改变原有统计口径

完整可运行代码

# 配置参数:活跃周期为8个月,结果输出路径
$activeMonthThreshold = 8
$outputPath = "C:\Users2.txt"
$thresholdDate = (Get-Date).AddMonths(-$activeMonthThreshold)

Get-ADUser -Filter 'Enabled -eq $true' -Properties CN, LastLogonDate, DistinguishedName |
  # 筛选符合活跃要求的用户:有登录记录,且最后登录时间在8个月周期内
  Where-Object {
    $_.LastLogonDate -and $_.LastLogonDate -ge $thresholdDate
  } |
  # 提取用户所在父容器的可分辨名称
  Select-Object @{
    Label = 'ParentContainer'
    Expression = { $_.DistinguishedName -replace "CN=$($_.CN)," }
  } |
  # 按父容器分组统计用户数
  Group-Object -Property ParentContainer |
  Select-Object Name, Count |
  # 导出结果到指定文件
  Out-File -FilePath $outputPath

可选调整说明

  • 如果你对登录时间精度要求极高,需要遍历域内所有域控制器查询每个用户的lastLogon属性取最大值,避免单DC复制延迟导致的统计误差,适合审计类严格场景使用
  • 如果你定义的“持续活跃满8个月”是指账号创建时长满8个月且处于启用状态,只需要将加载属性替换为whenCreated,筛选条件改为$_.whenCreated -le $thresholdDate即可
  • 可直接修改$activeMonthThreshold参数调整需要统计的活跃周期月数,不需要修改其他逻辑

内容的提问来源于stack exchange,提问作者David Jončić

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:54:22