Eseguire il passaggio di un gruppo di utenti da un dominio ad un altro in Active Directory è un’operazione complessa che richiede attenzione, soprattutto quando si trattano dati sensibili.
Di seguito sono forniti gli script in PowerShell per eseguire il trasferimento di un gruppo di utenti tra due domini in Active Directory, considerando che entrambi i domini sono già configurati e il trasferimento richiede una gestione accurata di utenti, gruppi e altri attributi.
- Preparazione e Assunzioni
Prima di iniziare, assumiamo le seguenti condizioni:
I due domini sono DomainA (dominio di origine) e DomainB (dominio di destinazione).
È necessario trasferire un gruppo di utenti da DomainA a DomainB.
L’amministratore ha i permessi per accedere e modificare entrambi i domini.
I domini sono trustati tra di loro o l’amministratore ha accesso amministrativo in entrambi i domini.
- Creazione di una lista di utenti da trasferire
Per prima cosa, è necessario creare un elenco di utenti da trasferire. Puoi estrarre i dettagli degli utenti da un gruppo in Active Directory.
Creare un elenco di utenti nel gruppo di origine
$groupName = “NomeDelGruppo” # Nome del gruppo in DomainA
$domainA = “DomainA” # Nome del dominio di origine
$domainB = “DomainB” # Nome del dominio di destinazione
Ottieni gli utenti dal gruppo in DomainA
$usersToMove = Get-ADGroupMember -Identity $groupName -Server $domainA | Where-Object { $_.objectClass -eq “user” }
Salva gli utenti in un file per riferimento futuro
$usersToMove | Select-Object SamAccountName, DistinguishedName | Export-Csv “C:\UsersToMove.csv” -NoTypeInformation
Write-Host “Gli utenti sono stati esportati nel file C:\UsersToMove.csv”
- Creazione degli utenti in DomainB
Una volta estratto l’elenco degli utenti, il passo successivo è creare gli stessi utenti in DomainB. Assicurati di copiare le informazioni necessarie come il nome utente, l’UPN (User Principal Name), i gruppi di appartenenza e le password.
Importare la lista di utenti da trasferire
$usersToMove = Import-Csv “C:\UsersToMove.csv”
foreach ($user in $usersToMove) {
# Verifica se l’utente esiste già in DomainB
$existingUser = Get-ADUser -Filter { SamAccountName -eq $user.SamAccountName } -Server $domainB -ErrorAction SilentlyContinue
if (-not $existingUser) {
# Creare un nuovo utente in DomainB
New-ADUser -SamAccountName $user.SamAccountName `
-UserPrincipalName "$($user.SamAccountName)@$domainB" `
-Name $user.SamAccountName `
-GivenName $user.SamAccountName `
-Surname "User" `
-DisplayName $user.SamAccountName `
-AccountPassword (ConvertTo-SecureString "PasswordTemporanea123!" -AsPlainText -Force) `
-Enabled $true `
-PassThru `
-Server $domainB
Write-Host "Creato l'utente $($user.SamAccountName) in $domainB"
} else {
Write-Host "L'utente $($user.SamAccountName) esiste già in $domainB"
}
}
- Copiare i gruppi di appartenenza
Una parte importante del processo è copiare le appartenenze ai gruppi di Active Directory. Assicurati di copiare gli utenti nei gruppi corretti nel nuovo dominio.
powershell
foreach ($user in $usersToMove) {
# Ottieni i gruppi dell’utente in DomainA
$userGroups = Get-ADUser -Identity $user.SamAccountName -Server $domainA | Get-ADUserMembership
foreach ($group in $userGroups) {
# Aggiungi l'utente a ciascun gruppo in DomainB
Add-ADGroupMember -Identity $group.Name -Members $user.SamAccountName -Server $domainB
Write-Host "Aggiunto $($user.SamAccountName) al gruppo $($group.Name) in $domainB"
}
}
- Gestire la migrazione delle password
Il passaggio delle password da un dominio a un altro non è direttamente possibile tramite PowerShell, in quanto le password sono memorizzate in modo sicuro nel database di Active Directory e non possono essere trasferite direttamente. Gli utenti devono reimpostare le loro password o è possibile utilizzare uno strumento di migrazione di terze parti (ad esempio, ADMT, Active Directory Migration Tool).
Tuttavia, per garantire che l’utente possa accedere al nuovo dominio, puoi creare una password temporanea e fornirla agli utenti per il primo accesso:
powershell
foreach ($user in $usersToMove) {
# Fornire una password temporanea
Set-ADUser -Identity $user.SamAccountName -Server $domainB -ChangePasswordAtLogon $true
Write-Host “Password temporanea impostata per $($user.SamAccountName) in $domainB”
}
- Rimuovere gli utenti da DomainA
Una volta completata la migrazione, è possibile rimuovere gli utenti da DomainA, se desiderato, per evitare duplicazioni.
powershell
foreach ($user in $usersToMove) {
# Rimuovere l’utente da DomainA
Remove-ADUser -Identity $user.SamAccountName -Server $domainA
Write-Host “Utente $($user.SamAccountName) rimosso da $domainA”
}
- Verifica e Test
Infine, assicurati che gli utenti siano stati correttamente migrati e siano in grado di accedere ai loro account nel nuovo dominio. Puoi eseguire alcune verifiche come testare l’accesso e la funzionalità dei gruppi di appartenenza.
powershell
foreach ($user in $usersToMove) {
# Verifica che l’utente sia stato creato in DomainB
$newUser = Get-ADUser -Identity $user.SamAccountName -Server $domainB
if ($newUser) {
Write-Host “L’utente $($user.SamAccountName) è stato migrato correttamente a $domainB”
} else {
Write-Host “Errore nel trasferimento dell’utente $($user.SamAccountName)”
}
}
Riepilogo
Questi script ti guideranno attraverso il processo di migrazione degli utenti da un dominio all’altro, creando gli utenti nel nuovo dominio, migrando le appartenenze ai gruppi e gestendo le password. È importante considerare anche eventuali dipendenze o risorse legate agli utenti nei domini originali, come le mailbox di Exchange o le risorse di rete, che potrebbero richiedere configurazioni aggiuntive.