如何通过PowerShell复制广告用户

时间:2014-11-01 11:03:20

标签: powershell active-directory directoryservices

我正在尝试将现有用户复制到具有新名称等的新用户。

$root = New-Object System.DirectoryServices.DirectorySearcher
$root.SearchRoot = "LDAP://dc=organization,dc=net"
$root.Filter = "(&(objectClass=user)(samaccountname=TestUser1))"
$result = $root.FindOne()

$test = $result.GetDirectoryEntry()
$newparent = New-Object System.DirectoryServices.DirectoryEntry($test.Parent)
$test.CopyTo($newparent,"TestUser2")

每当我运行上面的代码时,我都会得到:

ERROR: Exception calling "CopyTo" with "2" argument(s): "Not implemented
ERROR: "
TestDir.ps1 (22): ERROR: At Line: 22 char: 13
ERROR: + $test.CopyTo <<<< ($newparent,"TestUser2")
ERROR:     + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
ERROR:     + FullyQualifiedErrorId : DotNetMethodException
ERROR:

有谁知道问题可能是什么?我知道我想要实现的目标存在于ActiveDirectory模块和Quest中..但我无法访问这些因此我必须从头开始编写这个...

由于

1 个答案:

答案 0 :(得分:0)

您应该将实例属性与 New-AdUser 方法一起使用:

  

New-AdUser

     

使用模板创建新对象。为此,请创建新用户对象或检索现有用户对象的副本,并将Instance参数设置为此对象。提供给Instance参数的对象用作新对象的模板。您可以通过设置cmdlet参数来覆盖模板中的属性值。有关示例和更多信息,请参阅此cmdlet的实例参数说明。

     

-Instance<ADUser>

     

指定要用作新用户对象的模板的用户对象的实例。   您可以使用现有用户对象的实例作为模板,也可以构造新的用户对象以供模板使用。您可以使用Windows PowerShell命令行或使用脚本构建新的用户对象。

     
      
  • 方法1:使用现有用户对象作为新对象的模板。要检索现有用户对象的实例,请使用诸如Get-ADUser之类的cmdlet。然后,将此对象提供给New-ADUser cmdlet的Instance参数,以创建新的用户对象。您可以通过设置适当的参数来覆盖新对象的属性值。

  •   
  • 方法2:创建新的ADUser对象,并使用Windows PowerShell命令行界面设置属性值。然后将此对象传递给New-ADUser cmdlet的Instance参数,以创建新的Active Directory用户对象。

  •   

可以在support post on Technet中看到一个示例,其中作者可以成功创建用户,但是新用户对象的位置有困难。我想你应该阅读这篇文章,以便更好地理解 New-AdUser 方法和用法。

  

New-ADUser -SamAccountName "garyoj" -name "garyoj" -Instance $userinstance -PasswordNotRequire