【发布时间】:2020-06-18 05:22:09
【问题描述】:
我编写了一个广告批量脚本,但由于某种原因似乎无法正常工作。有人能帮我吗 ?
$ADUsers = Import-csv C:\Users\Deng\Desktop\newusers.csv
foreach ($User in $ADUsers)
{
$Username = $Users.username
$Firstname = $Users.firstname
$Password = $Users.password
$Lastname = $Users.lastname
$OU = $Users.ou
New-ADUser `
-SamAccountName $Username `
-UserPrincipalName $Username@aptushealth.com `
-Name $Firstname $Lastname `
-GivenName $Firstname `
-Surname $Lastname `
-Enabled $True `
-ChangePasswordAtLogon $false `
-DisplayName $Lastname, $Firstname `
-Path $OU `
-AccountPassword (convertto-securestring $Password -AsPlainText -Force)
}
我在下面收到此错误:
ConvertTo-SecureString:无法将参数绑定到参数“字符串” 因为它是空的。在行:24 字符:54 + ... -AccountPassword(转换为安全字符串 $Password -AsPlai ... +~~~~~~~~~ + CategoryInfo : InvalidData: (:) [ConvertTo-SecureString], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ConvertToSecureStringCommand
还可以查看 CSV 的内容
usersname firstname password lastname ou
efranklin Edward P@s$word Franklin "OU=PII Users,DC=PII,DC=net"
bjackson Bill P@s$word Jackson "OU=PII Users,DC=PII,DC=net"
我已经做出了改变,这就是我得到的——DavidNG
ConvertTo-SecureString:无法将参数绑定到参数“String”,因为它为空。在 line:24 char:54 + ... -AccountPassword (convertto-securestring $Password -AsPlai ... –
还是出现同样的错误
【问题讨论】:
-
什么是
$Users? -
@Caramiriel $users 是在 csv 中定义用户的变量
-
我认为@Caramiriel 的意思是它应该是 $User,因为这是您在 ForEach 中指定的
-
我开始认为您的输入 CSV 文件根本不是 CSV 文件,而是您在此处向我们展示的确切(列表)格式的文本文件。请编辑您的问题并添加输入文件的前三或四行以显示它的真实外观。
-
我已经编辑了您的问题,以将其放入可读的格式化文本中。我认为 CSV 使用空格字符作为字段分隔符是否正确?在这种情况下,只需将其添加到
Import-Csvcmdlet 作为参数-Delimiter ' '并接受 @Steven 的建议,使用 Splatting 来摆脱那些可怕的反引号。
标签: powershell