我想创建一个脚本,通过它在Active Directory中创建用户。我已经创建了一个单线程,可以正确创建用户。但是我知道我希望脚本创建一个具有不同输入的用户。
我创建了代码,但不管怎么说它都不起作用,任何人都可以详细说明我做错了吗?
$name=$args[0]
$givenname=$args[1]
$surname=$args[2]
$userlogin=$args[3]
$loginold=$args[4]
$description=$args[5]
$phone=$args[6]
$mail=$args[7]
$password=$args[8]
$passwordexpire=$args[9]
$locked=$args[10]
$oupath=$args[11]
echo $name
echo $givenname
echo $surname
echo $userlogin
echo $loginold
echo $description
echo $phone
echo $mail
echo $password
echo $passwordexpire
echo $locked
echo $oupath
New-ADUser -Name $name -GivenName $givenname -Surname $surname -UserPrincipalName $userlogin -SamAccountName $loginold -description $description -OfficePhone $phone -EmailAddress $mail -AccountPassword (Read-Host -AsSecureString "AccountPassword") $password -PasswordNeverExpires $passwordexpire -Enabled $locked -path $oupath
pause
错误讯息:
New-ADUser : Cannot validate argument on parameter 'Name'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At C:\POwershell\Create_ad_user.ps1:27 char:18
+ New-ADUser -Name $name -GivenName $givenname -Surname $surname -UserPrincipalNam ...
+ ~~~~~
+ CategoryInfo : InvalidData: (:) [New-ADUser], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.NewADUser
Press Enter to continue...:
PS C:\Users\Administrator\Desktop>
答案 0 :(得分:2)
看起来AccountPassword并不正确,因为您提示它(Read-Host -AsSecureString "AccountPassword")
然后直接在$password
中提供它。
如果您有大量参数要通过splatting通常是一个好主意,因为这样可以让所有内容更容易阅读:
$Params = @{
Name = $args[0]
Givenname = $args[1]
Surname = $args[2]
UserPrincipalName = $args[3]
SamAccountName = $args[4]
Description = $args[5]
OfficePhone = $args[6]
EmailAddress = $args[7]
AccountPassword = ConvertTo-SecureString -AsPlainText $args[8] -Force
PasswordNeverExpires = $args[9]
Enabled = $args[10]
Path = $args[11]
}
Write-Output $Params
New-ADUser @Params