1
我們正在嘗試在Windows 2012 Server系統上批量創建用戶;該系統只是爲了讓我們驗證一個ALM解決方案,並且它將會非常短暫,這意味着我們現在並不在乎安全性。 運行下面的腳本時,shell報告 調用帶有「0」參數的「SetInfo」的異常:「指定的用戶名無效。」 爲輸入文件中的每一行。 但是,如果我們手動執行循環內部的行,則會正確創建用戶。PowerShell腳本問題
# Work on the local system
$Computer =[ADSI]"WinNT://$env:ComputerName,Computer"
$UsersFilePath = "C:\users\Administrator\Downloads\ActiveUsers.txt"
$Group=[ADSI]"WinNT://WORKGROUP/./Developers,Group"
Get-Content $UsersFilePath | % {
$_ # Debug only line, remove it when done
$LocalUser=$Computer.Create("User", $_)
$LocalUser.SetPassword($_)
$LocalUser # Debug only line, remove it when done
$LocalUser.SetInfo()
}
我們應該如何編寫循環?
[這是mjolinor建議的答案;主要變化是從文件中讀取名稱的修整]
# Work on the local system
$Computer =[ADSI]"WinNT://$env:ComputerName,Computer"
$UsersFilePath = "C:\users\Administrator\Downloads\ActiveUsers1.txt"
$Group=[ADSI]"WinNT://WORKGROUP/./Developers,Group"
Get-Content $UsersFilePath | % {
$_ # Debug only line, remove it when done
$UserName = $_.Trim()
$LocalUser=$Computer.Create("User", $UserName)
$LocalUser.SetPassword($UserName)
#$LocalUser.put("userPrincipalName", "${name}@svr-tfs2013")
$LocalUser # Debug only line, remove it when done
$LocalUser.SetInfo()
$Group.Add($LocalUser.path)
}
如果採用手動輸入工作,但不是你的循環,我會懷疑那個輸入文件。你確定該文件中的用戶名是好的(沒有尾隨空白等)? – mjolinor
您是否嘗試過使用PowerShell活動目錄模塊[new-aduser](http://technet.microsoft.com/zh-cn/library/ee617253.aspx)cmdlet? – MDMoore313
我不是ADSI的專家,但看着文檔,你是否應該用'Set'的'Put'方法,例如'$ localUser.Put(「userPrincipalName」,「$ {name} @ $ domain」); $ localUser.SetInfo()'或者你也需要把'SAMAccountName'放在那裏? –