首页 > 解决方案 > Powershell Automate 脚本中的属性值不可接受

问题描述

我目前正在设置带有问题的 AD 用户创建脚本。

在这里回答完所有问题后就是出现的错误。

New-ADUser:属性值不在可接受范围内字符 E:\SCRIPT\SCRIPT_CREATE_USER_QUESTION.ps1:17:5

原始代码是:`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.Substring(0,2)"
$FirstLetterName        = "$Nom.Substring(0,1)"
$NomMinuscule           =  $Nom.ToLower() 
$Username               = "$FirstLetter$NomMinuscule"
$Init                   = "$TwoLetter$FirstLetterName.ToUpper()"
$Chemin                 = "OU=LBC-USERS,DC=lbcdom,DC=local"

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."`

标签: powershell

解决方案


-Initials我怀疑范围违规是因为您传递的字符串对于参数来说太长了-initials属性必须不超过 6 个字符,但您的字符串比您想象的要长得多。此外,$Username您构造的值不是有效的用户名。

当你这样做时:

$Name = 'Yarka'
$TwoFirstLetters = "$Name.Substring(0,2)"

的结果文字值$TwoFirstLetters将是Yarka.Substring(0,2)- PowerShell 将扩展$Name变量并忽略其余部分。

为避免这种情况,请使用 停止包围表达式"

$FirstLetter            = $Prenom.Substring(0,1).ToLower()
$TwoLetter              = $Prenom.Substring(0,2)
$FirstLetterName        = $Nom.Substring(0,1)
$NomMinuscule           = $Nom.ToLower() 
$Username               = "$FirstLetter$NomMinuscule"
$Init                   = "$TwoLetter$FirstLetterName".ToUpper()

如果必须在字符串文字中嵌入方法调用,请确保使用子表达式运算符转义表达式$()

$TwoLetter = "$($Prenom.Substring(0,2))" # this will work too

推荐阅读