2016-11-28 2 views
1

Я хотел создать скрипт для создания Пользователя через него в Active Directory. Я уже создал однострочный, который правильно создает пользователя. Но знаю, что я хочу, чтобы скрипт создал пользователя с разными входами.Создайте пользователя в Active Directory через Powershellscript

Я создал код, но как-то он не работает, может кто-нибудь уточнить, что я сделал не так?

$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

делает 'эхо $ name' выход что-то? Кроме того, '-AccountPassword' выглядит неправильно. – 4c74356b41

+2

Можете ли вы показать нам, как вы вызываете скрипт из командной строки? Также посмотрите [Параметры Powershell] (https://technet.microsoft.com/en-us/library/jj554301.aspx), они делают вещи намного проще, чем использование '$ args' –

ответ

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 
+0

Спасибо за ваш ответ и извините за большую задержку. При попытке вашего кода я получаю следующее сообщение об ошибке: 'ConvertTo-SecureString: не удается связать аргумент с параметром 'String', потому что он равен нулю. В C: \ Powershell \ create_ad_user_eingabe_test1.ps1: 10 символ: 59 + AccountPassword = ConvertTo-SecureString -AsPlainText $ арг [8] -Force + ~~~~~~~~ ' кажется, что-то с паролем снова не так. – user7140648

+0

Какую команду вы используете при вызове сценария? –

Смежные вопросы