Kategorien
Active Directory Exchange PowerShell

UPN anhand der primären E-Mail-Adresse generieren

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

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.