Назад | Перейти на главную страницу

PowerShell: скопируйте всех пользователей AD из подразделения в другое подразделение.

Я пытаюсь скопировать всех пользователей 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) 
}