Copie a unidade organizacional de um usuário para um novo usuário

1

Meu objetivo é copiar um usuário existente, incluindo o posicionamento da OU na árvore do AD.

Até agora eu tenho isso:

$SName = Read-Host "Please Enter the login initials of the source user "
$U = Get-ADUser -Identity $SName -Properties streetaddress,homepage,POBox,postalcode,city,country,company,department,office,fax
$FirstName = read-host -Prompt "Enter first name of new user: "
$LastName = read-host -Prompt "Enter last name of new user: "
$DisplayName = "$Firstname $LastName"
$DName = Read-Host "Please Enter logon initials of the new user "
$UPN = $DName+"@scangl.com"
$TempPassword = read-host -AsSecureString -Prompt "Enter temporary password (min. 8 characters)"
$Path = Get-User -Identity $SName|Select "OrganizationalUnit"
New-ADUser -Instance $u -Name $DisplayName -SamAccountName $DName -Path $Path -UserPrincipalName $UPN -DisplayName $DisplayName -givenname $FirstName -surname $LastName -AccountPassword $TempPassword -ChangePasswordAtLogon $True

Como você pode perceber, estou tentando usar o Get-User selecionando OrganizationalUnit, mas isso me dá o erro: Nenhuma referência superior foi configurada para o serviço de diretório. Portanto, o serviço de diretório não pode emitir referências para objetos fora dessa floresta.

Alguma sugestão de como copiar o posicionamento da UO, ou será que simplesmente não é possível copiar essa propriedade do usuário?

    
por Jens Svendsen 20.09.2012 / 11:44

2 respostas

1

A unidade organizacional (ou container) em que um objeto reside não é uma propriedade do objeto, portanto, você não pode lê-lo facilmente; mas você pode recuperar analisando o nome distinto do objeto (dividindo-o na primeira vírgula):

$DN = $U.DistinguishedName
$Path = $DN.Substring($dn.IndexOf(',') + 1)
New-ADUser [...] -Path $Path

O cmdlet Get-User não é do Active Directory, é do Shell de Gerenciamento do Exchange; sua propriedade OrganizationalUnit não é um caminho LDAP válido, portanto, não pode ser usado em um comando New-ADUser .

Se o DN do objeto for CN=User Name,OU=SomeOU,DC=domain,DC=com , meu código retornará OU=SomeOU,DC=domain,DC=com (que é o caminho LDAP real da UO), enquanto Get-User.OrganizationalUnit retornaria domain.com/SomeOU , uma coisa completamente diferente.

    
por 20.09.2012 / 12:13
1

Copie o usuário e, em seguida, mova da unidade organizacional padrão para a qual a cópia é criada. Simples assim. Como o Massimo apontou, a UO / container em que um objeto está não faz parte do objeto.

Se você pensar nisso como uma operação de arquivo, provavelmente ficará melhor. O usuário seria como um arquivo, e a UO ou um contêiner seria como uma pasta - você não adiciona a pasta ao arquivo, copia o arquivo no local em que deseja residir. A mesma coisa com o AD, mas em um domínio do Windows, há um contêiner / unidade organizacional padrão para todos os tipos de objetos, onde novos objetos desse tipo são criados automaticamente.

    
por 20.09.2012 / 14:36