Я пытаюсь скопировать всех пользователей 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 - это объект .NET типа System.DirectoryServices.DirectoryEntry ... в Visual Studio я нахожу метод CopyTo ... в PowerShell. Я не нахожу ни одного из его методов, а только свойства.
Я только начинаю работать с PowerShell, пожалуйста, помогите!
Вы не можете копировать пользователей AD.
Вы можете перемещать их из одного места в другое, или вы можете создавать новых пользователей на основе существующих ... но в последнем случае вам нужно указать новые имена пользователей, пароли и некоторые другие вещи; это не так просто, как операция «скопировать и вставить».
Пользователи являются участниками безопасности, они должны быть уникальными в данном домене; у вас не может быть двух «одинаковых» пользовательских объектов в разных OU.
В соответствии с этот вопрос StackOverflow, вам следует использовать PSBase
член DirectoryEntry
объект, чтобы получить доступ ко всем его методам. Попробуй это:
foreach($result in $results) {
$user = $result.GetDirectoryEntry()
$user.PSBase.MoveTo($targetEntry)
}