使用PowerShell将用户添加到AD

时间:2012-01-16 06:52:50

标签: powershell active-directory ldap

我有一个关于如何使用PowerShell将用户添加到AD的问题,我编写了一个小脚本,但在尝试创建用户时总是出错。

$connection= "LDAP://ou=Users, dc="domain", dc="com" 
    $OU = [adsi] $Connection
            $User = $OU.Create("user", "Test Person")
            $User.Put("Firstname", "Test")
            $User.Put("Surname", Person)
            $User.Put("Email", "email@e.com")
            $User.SetInfo()

我认为我的连接字符串是错误的,但我已经尝试了不同的方法,但仍然没有成功。这是我在当地尝试。需要让它工作,但通常我的AD在不同的服务器上,然后怎么做?

提前致谢。

2 个答案:

答案 0 :(得分:3)

尝试一下:

$container = [ADSI] "LDAP://dc.sopragroup.lan/cn=Users,dc=sopragroup,dc=lan"
$UserName = "user"
$User = $container.Create("User", "cn=" + $UserName)
$User.Put("sAMAccountName", $UserName)
$User.Put("givenName", "Test")
$User.Put("sn", "Person")
$User.Put("mail", "email@e.com")
$User.SetInfo()
$User.psbase.InvokeSet('AccountDisabled', $false)
$User.SetInfo()
$User.SetPassword("P@55w0rd")

答案 1 :(得分:1)

这是另一个例子(@Andy Arismendi是第一个)以及其他一些细节:

  1. 如果您想提供用户和密码(使用与当前用户不同的用户登录服务器),您可以使用DirectoryEntry构造函数
  2. 通常执行的错误是,在目录中创建对象时,目录树中表示此对象的名称将使用构造attribute=value构建。在Active-Directory中,您无法选择架构强加的属性。对于userinetOrgPersonCNorganizationalUnit OU。在您的情况下,对象的名称是CN=Test Person
  3. 您可以在创建OU和用户的情况下找到此处。

    Clear-Host
    $dn = New-Object System.DirectoryServices.DirectoryEntry ("LDAP://192.168.234.200:389/dc=dom,dc=fr","administrateur@dom.fr","admin")
    
    # Create an OU
    $Monou = $dn.create("OrganizationalUnit", "ou=Monou")
    #$Monou.Description = "Une description"
    $Monou.put("Description", "Une description")
    $Res = $Monou.Setinfo()
    
    
    # Create a user
    $objUtilisateur = $Monou.create("inetOrgPerson", "cn=Marc Assin")
    $objUtilisateur.setinfo()
    
    $objUtilisateur.samaccountname = "Massin"
    $objUtilisateur.givenName = "Marc"
    $objUtilisateur.sn = "Assin"
    #$objUtilisateur.displayName = $objUtilisateur.givenName + " " + $objUtilisateur.sn
    $objUtilisateur.userPrincipalName = "Massin@dom.fr"
    
    # Pu the state of the account#$objUtilisateur.SetPassword("test.2010")
    $objUtilisateur.pwdLastSet = 0
    $objUtilisateur.userAccountControl = 544 
    
    # Write the datas of the user
    $objUtilisateur.SetInfo()