我正在尝试将 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 中不能有两个“相同”的用户对象。