我正在尝试将现有用户复制到具有新名称等的新用户。
$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中..但我无法访问这些因此我必须从头开始编写这个...
由于
答案 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