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

PowerShell自动化AD用户创建脚本运行提示属性值不在可接受范围

报错根因分析
  • 首要触发原因:AD用户的Initials(姓名缩写)属性值超出限制。AD要求该属性最长仅支持2个字符,你代码中生成$Init变量的语法存在错误,导致生成的字符串远超过长度限制:
    你写的$TwoLetter = "$Prenom.Substring(0,2)"、$FirstLetterName = "$Nom.Substring(0,1)"、$Init = "$TwoLetter$FirstLetterName.ToUpper()"存在统一逻辑错误:PowerShell双引号内直接写对象方法不会被执行,只会被当成普通字符串拼接。比如$Prenom输入为Jean时,$TwoLetter实际输出是Jean.Substring(0,2)而非预期的je,拼接后$Init的长度可达十几字符,完全超出AD限制。
  • 其他可能触发该报错的原因:
    1. 生成的$Username长度超过20字符:AD的SamAccountName属性最大长度限制为20个字符
    2. 输入的密码不符合域密码策略要求:长度、复杂度、历史重复等规则不满足
    3. 指定的OU路径OU=LBC-USERS,DC=lbcdom,DC=local不存在,或者执行脚本的账号没有该OU的写权限
排查步骤

在New-ADUser代码前加入变量校验代码,确认参数合法性:

Write-Host "用户名:$Username,长度:$($Username.Length)"
Write-Host "姓名缩写:$Init,长度:$($Init.Length)"
Write-Host "OU路径是否存在:$([adsi]::Exists("LDAP://$Chemin"))"

执行后确认:

  • $Username长度是否≤20
  • $Init长度是否≤2
  • OU路径校验是否返回True
修复后完整代码

修正变量生成逻辑,增加边界校验避免属性值超出范围:

Import-Module ActiveDirectory
$Prenom      = Read-Host "Merci de rentrer le prénom de l'utilisateur à créer "
$Nom         = Read-Host "Merci de rentrer le nom de l'utilisateur à créer "
$Password    = Read-Host "Merci de rentrer le mot de passe en respectant la politique actuel "
$Description = Read-Host "Merci de rentrer l'intitulé du poste "

# 修正变量生成逻辑,去掉多余双引号,增加长度限制
$FirstLetter            = $Prenom.Substring(0,1).ToLower()
# 兼容单字名字的取字符逻辑
$TwoLetter              = $Prenom.Length -ge 2 ? $Prenom.Substring(0,2).ToLower() : $Prenom.Substring(0,1).ToLower()
$FirstLetterName        = $Nom.Substring(0,1).ToUpper()
$NomMinuscule           = $Nom.ToLower() 
# 用户名截断到20字符以内,符合SamAccountName限制
$Username               = "$FirstLetter$NomMinuscule".Substring(0, [Math]::Min(20, "$FirstLetter$NomMinuscule".Length))
# 缩写控制在2字符以内,符合AD限制
$Init                   = "$($TwoLetter.Substring(0,1))$FirstLetterName"
$Chemin                 = "OU=LBC-USERS,DC=lbcdom,DC=local"

# 前置校验避免非法值
if (-not [adsi]::Exists("LDAP://$Chemin")) {
    Write-Error "指定的OU路径不存在,请检查路径配置"
    exit 1
}
if ($Init.Length -gt 2) {
    $Init = $Init.Substring(0,2)
}

New-ADUser -SamAccountName $Username `
                -UserPrincipalName "$Username@lbcdom.local" `
                -Name "$Prenom $Nom" `
                -GivenName $Prenom `
                -Surname $Nom `
                -Enabled $True `
                -DisplayName "$Nom, $Prenom" `
                -AccountPassword (convertto-securestring $Password -AsPlainText -Force) `
                -Description $Description `
                -Initials $Init `
                -EmailAddress "$NomMinuscule@leboncandidat.fr" `
                -ProfilePath "\\SRV-WINLBC\Profils_itinerants\$Username" `
                -Path $Chemin `
                -ChangePasswordAtLogon $false `
                -PasswordNeverExpires $true `
                -CannotChangePassword $true

Write-Warning "Bravo! L'utilisateur : $Username est cree."

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:15:03