【问题标题】:Create a User in Active Directory via Powershellscript通过 Powershell 脚本在 Active Directory 中创建用户
【发布时间】:2016-11-28 15:05:40
【问题描述】:

我想创建一个脚本来通过它在 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>

【问题讨论】:

  • echo $name 有输出吗?另外,-AccountPassword 看起来也不对。
  • 你能告诉我们你是如何从命令行调用脚本的吗?另外请看一下Powershell Parameters,它们比使用$args更容易

标签: powershell active-directory windows-authentication


【解决方案1】:

看起来 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

【讨论】:

  • 感谢您的回答,对于耽搁时间深表歉意。尝试您的代码时,我收到以下错误:ConvertTo-SecureString : Cannot bind argument to parameter 'String' because it is null. At C:\POwershell\create_ad_user_eingabe_test1.ps1:10 char:59 + AccountPassword = ConvertTo-SecureString -AsPlainText $args[8] -Force + ~~~~~~~~ 似乎密码对我来说又是错误的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
相关资源
最近更新 更多