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

调用New-ADUser创建AD用户报“The parameter is incorrect”错误如何解决

AD批量创建用户报错解决方案

核心错误原因

  • 多余的Out-String调用:Import-Csv读取的CSV字段本身就是字符串类型,无需额外转换。Out-String会在每个字段值末尾添加换行符,AD用户属性不允许包含非法换行字符,这是触发参数错误的核心原因。
  • 用户名(SamAccountName)未做长度校验:AD要求SamAccountName最大长度为20字符,若拼接后的用户名超出长度会触发报错。
  • Get-ADUser过滤语法不规范:使用脚本块作为过滤条件存在变量作用域异常风险,推荐使用字符串格式的过滤规则。
  • 若要启用Manager参数,不能直接传入CSV里的经理名称,需要先查询经理对应的AD对象标识(SamAccountName/可分辨名/SID)再赋值。

修正后的完整代码

# 存储CSV数据到变量
$ADUsers = Import-Csv C:\Users\username\Desktop\newusers.csv

# 遍历CSV每一行
foreach ($User in $ADUsers) {
    # 直接读取字段,Trim清除可能的首尾空格
    $fname = $User.fname.Trim()
    $lname = $User.lname.Trim()
    $jobtitle = $User.jobtitle.Trim()
    $department = $User.department.Trim()
    $manager = $User.manager.Trim()
    $pagernumber = $User.pagernumber.Trim()

    # 生成用户名,自动截断到20字符满足AD要求
    $fn1 = $fname.Substring(0,1).ToLower()
    $username = "$fn1$lname".ToLower()
    if ($username.Length -gt 20) {
        $username = $username.Substring(0,20)
    }

    Write-Output "正在处理用户:$fname $lname,用户名:$username"

    # 检查用户是否已存在,使用字符串过滤规则
    if (Get-ADUser -Filter "SamAccountName -eq '$username'" -ErrorAction SilentlyContinue) {
        Write-Warning "用户账号 $username 已在Active Directory中存在,跳过创建"
        continue
    }

    # 组装用户属性
    $userProps = @{
        SamAccountName  = $username
        UserPrincipalName = "$username@你的实际域后缀.com" # 必须补全用户主体名,否则可能创建失败
        Name            = "$fname $lname"
        GivenName       = $fname
        Surname         = $lname
        Enabled         = $True
        DisplayName     = "$lname $fname"
        Company         = "Companyname"
        AccountPassword = ConvertTo-SecureString "符合域复杂度要求的密码" -AsPlainText -Force
        HomeDrive       = "X:"
        ScriptPath      = "K32.exe"
        OtherAttributes = @{pager = $pagernumber}
        Title           = $jobtitle
        Department      = $department
        Description     = $jobtitle
        # 若要启用经理字段,先查询经理AD对象,示例:
        # Manager = (Get-ADUser -Filter "Name -eq '$manager'").DistinguishedName
        # HomeDirectory = $folder
    }

    # 创建用户
    New-ADUser @userProps
    Write-Output "用户 $username 创建成功"
}

额外注意事项

  • 请将代码中的你的实际域后缀.com替换为真实域后缀,符合域复杂度要求的密码替换为满足域密码策略的密码,否则会因密码不符合要求创建失败。
  • CSV的双引号是标准格式,Import-Csv会自动处理,无需额外操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:51:02