我有一个powershell脚本循环通过用户的名称并将它们添加到一个OU(organizationalUnit)的Active Directory中,但我有一个问题:由于某种原因我无法将用户添加到该organizationalUnit。我在创建用户时遇到错误,该对象是空的,所以换句话说,我认为我的连接字符串似乎有效,我尝试了一切,不知道如何解决。
当我做同样的事情时只是一个通知但是对于cn它确实添加了用户但是对于OU而言......
这是一段脚本:
$Connection = "LDAP://ou=SopraUsers,dc=sopragroup,dc=lan"
# Get A Unique Password
[string]$Password = Generate-Password
$username=$Firstname.substring(0,1).toLower() + $Surname.toLower().replace(" ", "")
# Create User in AD
$container =[ADSI] $Connection
$User = $container.Create("User", "cn="+$username)
$User.Put("sAMAccountName", $username)
$User.Put("givenName", $Firstname)
$User.Put("sn", $Surname)
$User.Put("mail", "")
$User.Put("displayName", $Firstname + " "+$Surname)
$User.SetInfo()
$User.PsBase.Invoke("SetPassword", $Password)
$User.PsBase.InvokeSet("AccountDisabled", $false)
$User.pwdLastSet = 0
$User.SetInfo()
我认为问题出在$Connection = "LDAP://ou=SopraUsers,dc=sopragroup,dc=lan"
因为如果我做$Connection = "LDAP://cn=Users,dc=sopragroup,dc=lan"
然后我确实添加了人员,但仅限用户。
以下是我的AD的样子,你可以看到我希望将ppl添加到最低的OU。
提前感谢您的帮助
答案 0 :(得分:1)
只需将这一行放在评论中:
$User.Put("mail", "")
如果您不想发送电子邮件地址,请删除此行;在我的服务器上,它提供了错误的属性语法。
就连接字符串而言,你可以试试这个连接字符串吗?
"LDAP://sopragroup.lan/ou=SopraUsers,dc=sopragroup,dc=lan"
您可以创建如下连接:
$Connection = [adsi] "LDAP://sopragroup.lan/ou=SopraUsers,dc=sopragroup,dc=lan"
或者,如果您要进行身份验证:
$Connection New-Object System.DirectoryServices.DirectoryEntry ("LDAP://ServerIP/ou=SopraUsers,dc=sopragroup,dc=lan","administrator@sopragroup.lan","pwd")