AD_NewUser参数电源外壳错误



>我正在尝试自动创建新的AD用户。下面是一段有问题的代码;

    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}

当我输入$firstname为欧文时,出现以下错误;

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

我可能错过了什么明显的东西?

尝试将

给定的变量双引号这样:

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

您的问题将是传递给参数的值之一中的空格。空格之前的子字符串用作参数的值,并且没有其他参数可以按位置定义剩余内容。

一个例子是-HomeDirectory John Owen + $firstname + "." + $surname "My Documents" 在此,HomeDirectory 的值将只John,其余的将尝试使用 position 来填充下一个参数。

如果将参数值括在双引号中并依赖于变量插值而不是使用 + 运算符构建字符串,则更容易避免这些问题,因为整个值将始终传递给参数。

使用示例,它看起来像:-HomeDirectory "John Owen$firstname.$surnameMy 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.$surnameMy Documents" `
-HomeDrive "M:" `
-Manager $manager `
-OtherAttributes @{'title'=$jobtitle}

最新更新