2016-03-10 100 views
0
$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 

}Powershell的新ADUser便有問題

這是我當前的代碼。我的CSV具有所有正確的標題,它們也是按順序排列的。

爲每個用戶當我運行這是(我得到的錯誤的情況發生,沒有東西輸入到AD-用戶和計算機:

Error screen

所以我的問題是,爲什麼我會收到這個錯誤?如果你想看到我的CSV讓我知道

回答

0

以下是問題兒童的命令:

$email = $user.email 
$madou = "OU=$dptmt,OU=Staff,DC=breezeyob.v11a,DC=.org" 

T的幫助他的命令表明價值需要保持不變。問題來自$ email對另一個變量$ user的依賴。變量$ user依次取決於另一個變量$ userarray。變量中的這些變量很不穩定(從PowerShell的角度來看)。

嘗試之前達到像你$電子郵件變量下一個值,你在你的ad-hoc哈希表初始化:

$email = '[email protected]' 

請注意,你不必把它明確表示喜歡我的例子。它可以是這樣的還有:

$email = $anotherVariable 

這裏的關鍵是,$ anothervariable點的值一樣

'[email protected]' 

而不是像

"[email protected]$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 
} 
0

我認爲它只是$麻豆變量的語法:(。) 據我所知distinguishedName屬性不允許點在它的字符串中。所以我想,而不是:

$madou = "OU=$dptmt,OU=Staff,DC=breezeyob.v11a,DC=.org" 

它應該是:

$madou = "OU=$dptmt,OU=Staff,DC=breezeyob,DC=v11a,DC=org" 
相關問題