使用powershell将用户添加到广告

使用powershell将用户添加到广告,powershell,active-directory,ldap,Powershell,Active Directory,Ldap,我有一个关于如何使用powershell将用户添加到广告的问题,我写了一个小脚本,但我在尝试创建用户时总是出错 $connection= "LDAP://ou=Users, dc="domain", dc="com" $OU = [adsi] $Connection $User = $OU.Create("user", "Test Person") $User.Put("Firstname", "Test") $U

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

$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()
我认为我的连接字符串是错误的,但我已经尝试了不同的方法,仍然没有成功。这是我在本地尝试的。需要让它工作,但通常我的广告是在不同的服务器上,如何做到这一点呢

提前感谢。

尝试一下:

$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")
尝试一下:

$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")
下面是另一个例子(@Andy Arismendi是第一个),还有一些其他细节:

  • 如果要提供用户和密码(使用与当前用户不同的用户登录服务器),可以使用
    DirectoryEntry
    构造函数
  • 通常会发生的一个错误是,在目录中创建对象时,在目录树中表示该对象的名称是使用以下结构生成的:
    attribute=value
    。在Active Directory中,您不能选择由架构施加的属性。对于
    用户
    inetOrgPerson
    而言,对于
    组织单元
    而言,它是
    OU
    。在您的例子中,对象的名称是
    CN=testperson
  • 您将在这里找到创建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()
    
    下面是另一个例子(@Andy Arismendi是第一个),还有一些其他细节:

  • 如果要提供用户和密码(使用与当前用户不同的用户登录服务器),可以使用
    DirectoryEntry
    构造函数
  • 通常会发生的一个错误是,在目录中创建对象时,在目录树中表示该对象的名称是使用以下结构生成的:
    attribute=value
    。在Active Directory中,您不能选择由架构施加的属性。对于
    用户
    inetOrgPerson
    而言,对于
    组织单元
    而言,它是
    OU
    。在您的例子中,对象的名称是
    CN=testperson
  • 您将在这里找到创建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()
    

    我收到以下错误:检索成员“Create”时发生以下异常:“从服务器返回了引用”。在C:\Users\User\Desktop\addusers.ps1:72 char:10+$User=@user1002583,是否更改LDAP字符串以匹配您的环境?这在我拥有的测试域控制器上测试正常。当然,我必须更改域名以匹配。这是关于您得到的错误的,看起来您的LDAP字符串需要更正。你有UAC运行吗?如果是这样,请确保运行PowerShell提升版。@user1002583我在回答中更新了LDAP字符串以匹配您的屏幕截图。好的,我似乎成功地在本地添加了一个人,但是如果我的广告不是本地的,而是在其他服务器上,我的连接字符串会是什么样子?还有一个问题是,我如何向帐户添加图片?@user1002583很高兴它对您有效。请确保将您发现的对您有帮助的答案标记为答案。我建议为你关于如何向广告账户添加图片的问题创建一个新帖子。谢谢。我收到以下错误:检索成员“Create”时发生以下异常:“从服务器返回了一个引用。”在C:\Users\User\Desktop\addusers.ps1:72 char:10+$User=@user1002583是否更改了LDAP字符串以匹配您的环境?这在我拥有的测试域控制器上测试正常。当然,我必须更改域名以匹配。这是关于您得到的错误的,看起来您的LDAP字符串需要更正。你有UAC运行吗?如果是这样,请确保运行PowerShell提升版。@user1002583我在回答中更新了LDAP字符串以匹配您的屏幕截图。好的,我似乎成功地在本地添加了一个人,但是如果我的广告不是本地的,而是在其他服务器上,我的连接字符串会是什么样子?还有一个问题是,我如何向帐户添加图片?@user1002583很高兴它对您有效。请确保将您发现的对您有帮助的答案标记为答案。我建议为你关于如何向广告账户添加图片的问题创建一个新帖子。谢谢