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!"
}
}
Schreibe einen Kommentar