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

Enable-ADAccount脚本偶因密码复杂度报错后恢复正常的原因排查

AD账户启用失败后自动恢复的问题排查

问题描述

我需要把所有samaccountname以指定后缀结尾的AD用户添加到多个AD组,脚本对大部分用户生效,但有一个用户例外。启用该用户时抛出错误:The password does not meet the length, complexity, or history requirement of the domain.,但该用户密码实际满足要求(8位以上,包含数字、大写字母、特殊字符)。这个账户创建于2天前,昨天自动化脚本执行失败,今早手动运行脚本时该账户成功启用。

疑问

  • 为什么Enable-ADAccount会先失败后成功?
  • AD是否存在启用限制?
  • 为什么只有这个单个账户受影响?
  • 是否账户需要创建满2天才能启用?

执行脚本

[string]$suffix = "<my-suffix>"
[string[]]$AdmingGroups = @("group1","group2")
[psobject[]]$AdminUsers = Get-ADUser -Filter * | ? { $_.samaccountname -match $suffix} | Select SamAccountName

foreach ($User in $AdminUsers) {
    [string]$SamAccountName = $User.SamAccountName
    try {
        foreach ($ADGroup in $AdminGroups) {
            Add-ADGroupMember -Identity $ADGroup -Members $SamAccountName
        }
        Unlock-ADAccount -Identity $SamAccountName
        # This fails
        Enable-ADAccount -Identity $SamAccountName
    }
    catch {
        Write-Host "Failed to escalate AD Account $SamAccountName"
        # Print out the exception
        Write-Host $_
    }
}

可能的原因分析

  • AD复制延迟:该账户创建时的密码策略相关属性还没同步到脚本连接的域控制器,昨天执行时触发错误;今天AD复制完成,所有DC同步了正确属性,启用成功。单个账户受影响是因为它的创建时间刚好卡在复制周期临界点,其他账户的复制已完成。
  • 密码策略生效延迟配置:如果域里设置了“密码策略生效前的最短时间”为48小时(2天),新创建的账户在这段时间内无法启用,刚好匹配你遇到的时间点。默认这个值是0,需检查是否被修改过。
  • 账户属性初始化异常:账户创建时可能出现临时的密码哈希同步不全等属性异常,昨天脚本执行时AD数据库里该账户的密码相关属性未完全初始化,导致校验失败;经过一段时间后AD后台完成属性整理,账户恢复正常。
  • 域控制器负载波动:昨天脚本运行时目标DC负载过高,导致密码校验请求处理出错,返回错误提示;今天DC负载正常,校验流程顺利完成,启用成功。单个账户受影响可能是因为它是脚本最后处理的对象,此时DC负载达到峰值。

验证建议

  • 检查域组策略中的密码策略生效前的最短时间(路径:计算机配置→Windows设置→安全设置→账户策略→密码策略),确认是否设置了大于0的值。
  • 查看该账户的pwdLastSet属性,对比创建时间,验证密码策略的时间限制是否匹配。
  • 脚本中指定固定域控制器执行(比如Get-ADUser -Server DC01),避免因随机连接不同DC导致的复制延迟问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:15:32