PowerShell:将一个OU的所有AD用户复制到另一个OU

我试图将OU“A”的所有用户复制到OU“B”。 我的PowerShell就是这个镜头

$sourceEntry = [ADSI]"LDAP://OU=A,DC=demo,DC=com" $targetEntry = [ADSI]"LDAP://OU=B,DC=demo,DC=com" $searcher = New-Object DirectoryServices.DirectorySearcher($sourceEntry) $searcher.Filter = "(objectClass=user)" $results = $searcher.FindAll() foreach($result in $results) { $user = $result.GetDirectoryEntry() $user.CopyTo($targetEntry) } 

我的问题是,$用户似乎缺乏我尝试调用的CopyTo方法。 据我了解的PowerShell,$ user是typesSystem.DirectoryServices.DirectoryEntrytypes的.NET对象…在Visual Studio中我find方法CopyTo …在PowerShell中找不到它的任何方法,只是属性。

我刚刚开始使用PowerShell,所以请帮助!

根据这个StackOverflow的问题 ,你应该使用一个DirectoryEntry对象的PSBase成员来访问它的所有方法。 尝试这个:

 foreach($result in $results) { $user = $result.GetDirectoryEntry() $user.PSBase.MoveTo($targetEntry) } 

您不能复制AD用户。

您可以将它们从一个地方移到另一个地方,也可以根据现有的用户创build新的用户…但在后一种情况下,您必须提供新的用户名,密码和其他一些东西; 这不像“复制和粘贴”操作那么简单。

用户是安全主体,在给定的域中必须是唯一的; 在不同的OU中不能有两个“相同的”用户对象。