Hier ein kleines PowerShell Script (Set-UPNbasedSMTP), um den UPN (User Principal Name) anhand der primären SMTP Adresse (E-Mail-Adresse) für alle Active Directory Benutzer mit Postfach zu setzen.

Das PowerShell Script „Set-UPNbasedSMTP“ listet zuerst die vorhandenen von Exchange akzeptierten Domänen auf, vergleicht diese mit den ggfs. vorhandenen UPN Suffixen und ergänzt diese um nicht vorhandene User Principal Suffixe. Im nächsten Schritt wird der User Principal Name des AD User Objektes gleich der primären SMTP Adresse der entsprechenden Mailbox gesetzt.
$UPNSuffixe = New-Object -TypeName System.Collections.Generic.List[PSCustomObject] if($env:ExchangeInstallPath){ $ExchVer = $((Get-ChildItem $($env:ExchangeInstallPath + "Bin\ExSetup.exe")).VersionInfo.FileVersion).Replace(".","") if($ExchVer.StartsWith("1502") -or $ExchVer.StartsWith("1501") -or $ExchVer.StartsWith("1500")){ Write-Host "Laden des Exchange PowerShell Snapins für Exchange 2013, 2016, 2019" -NoNewline Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn Write-Host " -> Ok!" } elseif($ExchVer.StartsWith("14")){ Write-Host "Laden des Exchange PowerShell Snapins für Exchange 2010" -NoNewline Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 Write-Host " -> Ok!" } } if($(Get-PSSnapin | where { $_.Name -ieq "Microsoft.Exchange.Management.PowerShell.E2010" -or $_.Name -ieq "Microsoft.Exchange.Management.PowerShell.SnapIn" })){ $DomainDNName = (Get-ADDomain -Identity $env:USERDNSDOMAIN).DistinguishedName foreach($UPNSuffix in $(Get-ADForest -Identity $env:USERDNSDOMAIN | Select-Object UPNSuffixes -ExpandProperty UPNSuffixes | Sort-Object)){ $UPNSuffixe.Add($UPNSuffix) } foreach($AcceptedDomain in $(Get-AcceptedDomain | ? DomainName -ne $env:USERDNSDOMAIN | Select-Object DomainName -ExpandProperty DomainName)){ if($UPNSuffixe -inotcontains $AcceptedDomain.Domain){ Write-Host "Füge UPN Suffix ""$AcceptedDomain"" hinzu" -NoNewline Set-ADForest -Identity $env:USERDNSDOMAIN -UPNSuffixes @{Add="$AcceptedDomain"} Write-Host " -> Ok!" } } foreach($Mailbox in $(Get-Mailbox | ? Name -inotmatch "DiscoverySearchMailbox")){ Write-Host "Setze UPN ""$($Mailbox.PrimarySmtpAddress)"" für Benutzer ""$($Mailbox.SamAccountName)""" -NoNewline Set-ADUser -Identity $Mailbox.SamAccountName -UserPrincipalName $Mailbox.PrimarySmtpAddress Write-Host " -> Ok!" } }
PowerShell Script Set-UPNbasedSMTP User Principal Name Exchange 2010 Exchange 2016 UPN