2017-05-23 9 views
0

新しいADユーザーの作成を自動化しようとしています。問題のコードのスニペットは以下の通りです。AD_NewUser parameters Powershellエラー

New-ADUser -GivenName "$firstname" ` 
-Surname $surname -DisplayName ($firstname + ' ' + $surname) ` 
-UserPrincipalName ($firstname + '.' + $surname + $email) -EmailAddress ($firstname + '.' + $surname + $email) -Department $department -HomePhone $phonenumber -AccountPassword $plainpassword -ChangePasswordAtLogon 1 -Enabled 1 -Fax "OMITTED" -HomeDirectory "OMITTED" + $firstname + "." + $surname "\My Documents" -HomeDrive "M:" -Manager $manager -OtherAttributes @{'title'=$jobtitle} 

Owenとして$ firstnameを入力すると、次のエラーが表示されます。

New-ADUser : A positional parameter cannot be found that accepts argument 'Owen'. 
At C:\Users\ryan.hargreavesadmin\Desktop\NewUser.ps1:24 char:1 
+ New-ADUser -GivenName $firstname ` 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [New-ADUser], ParameterBindingException 
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.NewADUs 
    er 

どのような明白なものがありますか?

+0

としてあなた '新ADUser'コマンドの全体をご提示ください表示されたコードは、エラーの原因ではない可能性があります。 – BenH

+0

更新されました。個人情報がこの –

+0

に公開されないようにパラメータ化されました。 –

答えて

0

ので、同じよう を与えられた二重引用符の変数にしてみてください。

$firstname = Read-Host 'Enter first name' 
New-ADUser -GivenName "$firstname" ` #Script continues for other parameters 
+0

私は二重引用符で私は恐れている同じ問題があります。 –

+0

変数を引用符で囲んでも何も変わりません。 'Read-Host'はその変数に保存する文字列を返します。その後、その変数をコマンドレット/関数のパラメータに使用すると、引用符を必要とせずに完全に展開された値が使用されます。 – BenH

0

あなたの問題は、パラメータに渡している値の1のスペースになるだろう。スペースの前の部分文字列はパラメーターの値として使用され、残っているものの位置によって定義する別のパラメーターはありませんでした。

例は-HomeDirectory John Owen + $firstname + "." + $surname "\My Documents"です。HomeDirectoryの値はJohnになり、残りの部分は次のパラメータを埋めるために位置を使用しようとします。

+演算子を使用して文字列を作成するのではなく、パラメータの値を二重引用符で囲んで変数の補間を使用すると、値全体が常にパラメータに渡されるため、これらの問題を回避する方が簡単です。それは次のようになります例で

:あなたのコードのすべてにこれを適用するには-HomeDirectory "John Owen$firstname.$surname\My Documents"

は次のようになります。

New-ADUser -GivenName "$firstname" ` 
-Surname $surname -DisplayName "$firstname $surname" ` 
-UserPrincipalName "$firstname.$surname$email" ` 
-EmailAddress "$firstname.$surname$email" 
-Department $department ` 
-HomePhone $phonenumber ` 
-AccountPassword $plainpassword ` 
-ChangePasswordAtLogon 1 ` 
-Enabled 1 ` 
-Fax "OMITTED" ` 
-HomeDirectory "OMITTED$firstname.$surname\My Documents" ` 
-HomeDrive "M:" ` 
-Manager $manager ` 
-OtherAttributes @{'title'=$jobtitle}