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

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)
}

我的问题是,$user 似乎缺少我尝试调用的 CopyTo 方法。据我了解,PowerShell 中,$user 是 System.DirectoryServices.DirectoryEntry 类型的 .NET 对象...在 Visual Studio 中,我找到了方法 CopyTo...在 PowerShell 中,我找不到它的任何方法,只有属性。

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

答案1

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

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

答案2

您不能复制 AD 用户。

您可以将他们从一个地方移动到另一个地方,也可以基于现有用户创建新用户...但在后一种情况下,您必须提供新的用户名、密码和一些其他信息;它不像“复制和粘贴”操作那么简单。

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

相关内容