PowerShell: Copie todos os usuários do AD de uma OU para outra OU

1

Estou tentando copiar todos os usuários da UO "A" para a UO "B". Meu PowerShell atirou para isso é

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

Meu problema é que esse usuário $ parece não ter o método CopyTo para o qual eu tento chamar. Tanto quanto eu entendo PowerShell, $ user é um objeto .net do tipo System.DirectoryServices.DirectoryEntry ... no Visual Studio eu encontrar o método CopyTo ... no PowerShell não encontrar nenhum de seus métodos, apenas propriedades.

Estou apenas começando com o PowerShell, então, por favor, ajude!

    
por Hinek 24.02.2010 / 17:16

2 respostas

1

De acordo com esta pergunta do StackOverflow , você deve usar o membro PSBase de um objeto DirectoryEntry para acessar todos de seus métodos. Tente isto:

foreach($result in $results) { 
    $user = $result.GetDirectoryEntry() 
    $user.PSBase.MoveTo($targetEntry) 
}
    
por 26.02.2010 / 20:28
6

Você não pode copiar usuários do AD.

Você pode movê-los de um lugar para outro ou criar novos usuários com base nos existentes ... mas, no último caso, você deve fornecer novos nomes de usuário, senhas e algumas outras coisas; não é tão simples quanto uma operação "copiar e colar".

Os usuários são entidades de segurança, eles devem ser exclusivos em um determinado domínio; você não pode ter dois objetos de usuário "idênticos" em unidades organizacionais diferentes.

    
por 24.02.2010 / 17:28