UserPrincipalName to jeden z atrybutów Active Directory, stanowi login oparty na standardzie RFC 822 i składa się z dwóch elementów – prefiksu nazwy UPN (nazwy konta użytkownika) oraz sufiksu nazwy UPN (nazwy domeny). Jak zmienić UPN użytkownika? Jak zrobić to masowo z użyciem PowerShell? W jaki sposó zmienić
Większość usług katalogowych opiera się o nazewnictwo z lasem lub domeną i rozszerzeniemi .local / .lan / .internal np sprawdzoneit.local
UserPrincipalName w takim wypadku to nazwauzytkownika@sprawdzone.it jak zmienić ją na nazwauzytkownika@zaufane.it ?
Zacznijmy od dodania sufiksu do naszej domeny obecnej domeny, otwieramy przystawkę Active Directory Domains and Trusts
W lewym panelu klikamy prawym prczyiskiem na głównej gałęzi i wybieramy właściwości:
następie wprwadzamy nowy UPN suffix, w naszym przypadku zaufane.it i klikamy dodaj:
nowo dodany suffix pojawi się na liście:
Następnie w przystawce Użytkownicy dla określonego konta użytkownika możemy na zakładce konto wskazać nowy suffix:
Z poziomu PowerShell użyjemy polecneia: Set-ADUser
Set-ADUser -Identity administrator -UserPrincipalName "administrator@zaufane.it"
Aby zmienić UPN masowo, na przykładać dla wszystkich użytkowników którzy będą używać Microsfot 365, uyżyjemy do tego skryptu PowerShell.
Załóżmy że mamy użytkowników w określonym OU np m365 oraz dodatkowo posiadają oni atrybut EmailAddress w domenie sprawdzone.it
skrypt wybiera wszystkich użytkowników z Active Directory o określonym wyżej filtrowaniu a następnie zmienia masowo UserPrincipalName (przez podmiane suffixów użytych w parametrach). Na końcu wyświetli komunikat o zmianie Suffixu per użytkownik:
#Active Directory module
Import-Module ActiveDirectory
#parameters
$server = "dc"
$oldSuffix = "sprawdzone.it"
$newSuffix = "zaufane.it"
#take all users from OU whose EmmailAddress is *@sprawdzone.it
$ou = "OU=m365,DC=sprawdzone,DC=it"
Get-ADUser -Filter {EmailAddress -like "*@sprawdzone.it"} -SearchBase $ou | ForEach-Object {
#build a new UPN by replacing the suffix
$newUpn = $_.UserPrincipalName.Replace($oldSuffix, $newSuffix)
#change UPN
$_ | Set-ADUser -server $server -UserPrincipalName $newUpn
#write
Write-Host -ForegroundColor Green "Changed UserPrincipalName user: $($_.SamAccountName) for: $newUPN"
}
w efekcie uzyskamy w naszej konsoli poniższy wynik:
Oczywiście warunki filtrowania i OU są opcjonalnie. A przed zastosowaniem produkcyjnym testujcie komentując linie 18 czyli $_ | Set-ADUser…..