$userarray = import-csv "userlist.csv"
foreach ($user in $userarray){
$login = $user.username
$gname = $user.firstname
$sname = $user.lastname
$fname = $gname + " " + $sname
$passw = ConvertTo-SecureString $user.password -AsPlainText -Force
$email = $user.email
$dptmt = $user.department
$hodir = "\\BYFS01\Home$\$login"
$madou = "OU=$dptmt,OU=Staff,DC=breezeyob.v11a,DC=.org"
New-ADUser -SamAccountName $login -UserPrincipalName $email -Name $fname -GivenName $gname -Surname $sname -EmailAddress $email -AccountPassword $passw -Enabled 1 -Path $madou -HomeDrive "Z:" -HomeDirectory $hodir
}
这是我目前的代码。我的CSV具有所有正确的标题,它们也是有序的。
我运行时遇到的错误是(每个用户都会发生错误,没有任何内容输入AD-用户和计算机:
所以我的问题是,为什么我会收到此错误?如果你想看到我的CSV让我知道!
答案 0 :(得分:0)
以下是您的命令的子问题:
$email = $user.email
$madou = "OU=$dptmt,OU=Staff,DC=breezeyob.v11a,DC=.org"
命令的帮助表明值必须是常量。问题来自$ email对另一个变量$ user的依赖。变量$ user依次依赖于另一个变量$ userarray。变量中的这么多变量是不稳定的(从PowerShell的角度来看)。
尝试在您的$ email变量中获取类似以下的值,然后在ad-hoc HashTable中初始化它:
$email = 'email@company.org'
请注意,您不必像我的示例那样明确明确。它也可以是这样的:
$email = $anotherVariable
这里的关键是$ anothervariable指向像
这样的值'email@company.org'
而不是
"email@$DontKnowThisYetVariable.org"
请考虑以下事项:
$login = $user.username
此声明很可能不会导致任何问题,因为您的变量'$ user.username'指向CSV中某处的字符串常量,如“Calvin”或“Hobbes”。
我相信,如果您的变量指向常量值,您的命令将顺利运行。当我创建一个快速而肮脏的Active Directory域时,我重现了同样的错误。我在我的超级新AD域中运行了以下内容,它起作用了:
$userarray = Import-Csv "userlist.csv"
$DefinedVariable = "Users"
foreach ($user in $userarray){
$login = $user.username
$gname = $user.firstname
$sname = $user.lastname
$fname = $gname + " " + $sname
$passw = ConvertTo-SecureString $user.password -AsPlainText -Force
$email = $user.email
$dptmt = $DefinedVariable
$madou = "CN=$dptmt,DC=contoso,DC=com"
New-ADUser -SamAccountName $login -UserPrincipalName $email -Name $fname -GivenName $gname `
-Surname $sname -EmailAddress $email -AccountPassword $passw -Enabled $true `
-Path $madou -HomeDrive "Z:" -HomeDirectory $hodir
}
答案 1 :(得分:0)
我认为它只是$ madou变量的语法: 据我所知,DistinguishedName属性不允许在其字符串中使用点(。)。所以我想,而不是:
$madou = "OU=$dptmt,OU=Staff,DC=breezeyob.v11a,DC=.org"
应该是:
$madou = "OU=$dptmt,OU=Staff,DC=breezeyob,DC=v11a,DC=org"