【发布时间】:2011-03-05 14:34:48
【问题描述】:
我创建了一个脚本,该脚本从 CSV(或其他数据集,但不发布该数据集)读取并在我的 AD 环境中创建用户。
基本上,任何传入脚本的数据集都会被处理,如果用户不存在,则会创建一个用户。如果用户已经存在于 AD 中,则脚本会跳过该条目。这是一个仅限 CREATE 的脚本。
它很慢,我想在保持功能的同时提高性能。你能给我一些提示,告诉我如何让这个表现更好吗?
import-csv "c:\PSScripts\LDAP\ADMigrate.csv" | ForEach-Object {
# Define the User OU
$usersOU = [ADSI] "LDAP://ou=Students, dc=live,dc=tcicollege,dc=edu"
# Check for existing users
$existingUsers = ($usersOU.psbase.children | Where-Object {$_.psBase.schemaClassName -eq "User"} | Select-Object -expand Name)
$userQuery = $existingUsers -contains $_.'AccountName'
if ($userQuery) {
echo $_.'AccountName' " already exists in Directory."
} else {
# Create a new user
$newUser = $usersOU.create("user","cn=" + $_.'AccountName')
# Set Account AttributesAMAccountName
$newUser.Put("sAMAccountName", $_.'AccountName')
$newUser.Put("givenName", $_.'FirstName')
$newUser.Put("employeeID", $_.'StudentID')
$newUser.Put("sn", $_.'LastName')
$newUser.Put("department", $_.'Department')
$newUser.Put("company", $_.'SyStudentID')
$newUser.Put("UserPrincipalName", $_.'AccountName' + "@live.tcicollege.edu")
$newUser.Put("mail", $_.'AccountName' + "@live.tcicollege.edu")
$newUser.Put("displayName", $_.'LastName' + "," + " " + $_.'FirstName')
# First Commit
$newUser.SetInfo()
$newUser.userAccountControl="66048"
$newUser.Put("pwdLastset", -1)
$newUser.SetPassword($_.'Password')
# Final Commit
$newUser.SetInfo()
echo $_.'AccountName' " created successfully."
}
}
提前感谢您提供的任何帮助。
【问题讨论】:
标签: powershell active-directory csv ldap adsi