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

PowerShell废弃账号处理脚本行为不一致:禁用脚本漏处理账号求助

问题诊断与修复方案

我一眼就发现了问题的核心:你的禁用脚本和报告脚本的用户过滤逻辑不一致,这直接导致了部分账号被遗漏处理。

关键差异对比

先对比两个脚本中Get-ADUser的核心过滤条件:

  • 报告脚本的筛选逻辑覆盖了两类启用状态的账号:

    {(Enabled -eq $True) -AND ((LastLogonDate -lt $olddate) -OR ((LastLogonDate -notlike "*") -AND (WhenCreated -lt $olddate)))}
    

    它会处理:

    • 最后登录时间超过45天的账号
    • 从未登录过(LastLogonDate属性为空)且创建时间超过45天的账号
  • 禁用脚本的筛选逻辑只覆盖了第一类:

    {(Enabled -eq $True) -AND (LastLogonDate -lt $olddate)}
    

    完全忽略了那些没有登录记录但创建时间超期的账号——这就是你看到报告里有30个账号,但禁用脚本没处理的根本原因!

修复后的禁用脚本

把禁用脚本的过滤条件改成和报告脚本完全一致,同时做了一些代码简化优化:

Import-Module ActiveDirectory

$oldDate = [DateTime]::Today.AddDays(-45)
# 将需要排除的OU整理成数组,简化后续判断逻辑
$excludedOUs = @(
    "OU=Resource accounts,OU=Domain Users,DC=placeholder,DC=org",
    "OU=Service Accounts,OU=Domain Users,DC=placeholder,DC=org",
    "OU=DO NOT DELETE,OU=Disabled Accounts,DC=placeholder,DC=org",
    "CN=Users,DC=placeholder,DC=org",
    "OU=User Templates,OU=Domain Users,DC=placeholder,DC=org",
    "CN=Microsoft Exchange System Objects,DC=placeholder,DC=org"
)

# 使用和报告脚本完全匹配的过滤条件
$disUsers = Get-ADUser -Filter {
    (Enabled -eq $True) -AND 
    ((LastLogonDate -lt $olddate) -OR ((LastLogonDate -notlike "*") -AND (WhenCreated -lt $olddate)))
} -Properties sAMAccountName,Name,SID,Enabled,LastLogonDate,Modified,info,description,DistinguishedName | 
    Where-Object {
        # 用数组方法简化OU排除判断
        !$excludedOUs.Any({ $_.DistinguishedName -like "*,$_" })
    }

foreach ($user in $disUsers) {
    Write-Host "正在禁用账号:$($user.sAMAccountName) ($($user.Name))"
    # 直接传入用户对象,无需单独提取DistinguishedName
    Disable-ADAccount -Identity $user -ErrorAction Continue
}

额外优化建议

  1. 先验证再执行:在禁用操作前,先把待处理账号导出为CSV,和报告脚本的结果对比确认,确保逻辑一致后再执行禁用,降低误操作风险。
  2. 添加日志记录:把每个账号的禁用结果(成功/失败)写入日志文件,方便后续排查问题。
  3. 测试环境验证:先在测试AD环境中运行脚本,确认无误后再部署到生产环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:06:07