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

使用New-ADUser创建AD用户成功但密码未生效的问题排查

脚本密码未生效的排查与修复

核心问题排查

  1. 变量名拼写错误
    脚本中定义的用户列表变量是$userslist,但foreach循环遍历的是$userlist(少了一个s),这会导致循环根本不会执行。如果你的实际账号创建成功,说明可能是笔误,但这个错误必须修正,否则后续批量创建会失效:

    # 修正前
    foreach($user in $userlist){
    # 修正后
    foreach($user in $userslist){
    }
    
  2. AD密码策略限制
    即使脚本中指定了密码,若密码不符合域的密码策略(比如长度不足、缺少大小写/特殊字符、重复历史密码等),New-ADUser可能不会抛出错误,但密码不会被正确设置。可以先手动验证密码是否符合当前域的策略,或者在脚本中添加密码合规性检查。

  3. SecureString生成验证
    确保ConvertTo-SecureString正确生成安全字符串,可以在脚本中添加验证步骤:

    $securePassword = ConvertTo-SecureString $password -AsPlainText -Force
    Write-Host "生成的安全字符串类型: $($securePassword.GetType().FullName)"
    

    若输出不是System.Security.SecureString,说明转换过程有问题。

修正后的完整脚本

# 测试用用户列表
$userslist = @('Julie Bowen')
$password = "Pass123!"

foreach($user in $userslist){
    $userParts = $user.Split(" ")
    $firstName = $userParts[0]
    $lastName = $userParts[-1]
    $dnsroot = '@example.com'
    $accountname = "$firstName.$lastName"
    $samname = $accountname + $dnsroot
    Write-Host "创建用户: $samname"
    
    # 生成安全字符串并验证
    $securePassword = ConvertTo-SecureString $password -AsPlainText -Force
    if($securePassword -is [System.Security.SecureString]){
        Write-Host "安全字符串生成成功"
    }

    $userDetails = @{
        GivenName             = $firstName 
        Surname               = $lastName 
        Name                  = "$firstName $lastName" 
        SamAccountName        = $accountName
        UserPrincipalName     = $accountName + $dnsroot 
        AccountPassword       = $securePassword
        Enabled               = $true
        ChangePasswordAtLogon = $true
        # 若需要指定目标OU,添加Path参数
        # Path                  = "OU=Users,DC=example,DC=com"
    }

    if($firstName -eq "Julie"){
        # 使用-PassThru参数返回创建的用户对象,便于验证
        $newUser = New-ADUser @userDetails -PassThru
        if($newUser){
            Write-Host "用户创建成功,账号名: $($newUser.SamAccountName)"
        }
    }
}

额外验证步骤

创建用户后,可以运行以下命令检查密码是否正确设置:

Get-ADUser "Julie.Bowen" -Properties AccountExpirationDate, PasswordLastSet | Select-Object Name, PasswordLastSet

若PasswordLastSet有值,说明密码已成功应用;若为空,则密码未设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:01:15