使用PowerShell将用户导入OU中的AD

时间:2012-01-17 20:38:24

标签: powershell active-directory

我有一个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。

提前感谢您的帮助

1 个答案:

答案 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")