Website-Suche

Ändern Sie die Alias-Adresse mit PowerShell in die primäre SMTP-Adresse


Sie verfügen bereits über die primäre SMTP-Adresse und die Alias-Adresse für jedes Postfachset. Die Aufgabe besteht jedoch darin, die Alias-Adresse mit der primären SMTP-Adresse auszutauschen. Am besten geht das mit PowerShell. In diesem Artikel erfahren Sie, wie Sie mit PowerShell die Alias-Adresse in die primäre SMTP-Adresse in Exchange Server ändern.

Einführung

Das PowerShell-Skript Set-PrimaryAddress.ps1 funktioniert für:

  • Tauschen Sie vor Ort aus
  • Exchange-Hybrid

Wenn Sie dasselbe für eine Exchange Online-Umgebung (Microsoft 365) tun möchten, lesen Sie den Artikel „Microsoft 365-Aliasadresse mit PowerShell in primäre SMTP-Adresse ändern“.

Hinweis: Die Alias-SMTP-Adresse wird zur primären SMTP-Adresse und die primäre SMTP-Adresse wird zu einer Alias-Adresse. Die primäre SMTP-Adresse wird also nicht entfernt; Es wird einfach mit der Alias-SMTP-Adresse ausgetauscht.

Bevor Sie beginnen

Was passiert, wenn nicht für jedes Postfach bereits eine Alias-Adresse festgelegt ist? Am besten lesen Sie den Artikel Massen-Hinzufügen sekundärer SMTP-Adressen mit PowerShell durch.

Nachdem Sie überprüft haben, dass die Alias-Adresse für alle Postfächer festgelegt ist, führen Sie das PowerShell-Skript „Set-PrimaryAddress.ps1“ aus diesem Artikel aus, um die Alias-Adresse mit der primären SMTP-Adresse auszutauschen.

Angenommen, Sie sind fertig und möchten die alte primäre SMTP-Adresse entfernen, die jetzt eine Alias-Adresse ist. Sie können den Artikel Massenentfernung sekundärer SMTP-Adressen mit PowerShell lesen.

Es ist immer besser, dies schrittweise zu tun, als mit einem Skript, das alles sofort erledigt, damit Sie sicher sein können, dass alles richtig eingestellt ist.

Bereiten Sie das PowerShell-Skript zum Festlegen der primären SMTP-Adresse vor

Laden Sie das PowerShell-Skript „Set-PrimaryAddress.ps1“ herunter oder kopieren Sie den folgenden Code und fügen Sie ihn in Notepad ein. Geben Sie ihm den Namen Set-PrimaryAddress.ps1 und legen Sie es im Ordner C:\scripts ab. Erstellen Sie einen Ordner Scripts, falls Sie noch keinen haben.

<#
    .SYNOPSIS
    Set-PrimaryAddress.ps1

    .DESCRIPTION
    Get the secondary (alias) address from a specified domain and set it as the primary SMTP address
    for all mailbox users in Exchange Server and Exchange Hybrid. If there is no alias address
    set with the specified domain, it will skip the user and display a message. The primary SMTP address
    will become an alias address and all the secondary email address will remain.

    .LINK
    www.alitajran.com/change-alias-address-to-primary-smtp-address/

    .NOTES
    Written by: ALI TAJRAN
    Website:    alitajran.com
    X:          x.com/alitajran
    LinkedIn:   linkedin.com/in/alitajran

    .CHANGELOG
    V1.00, 06/04/2024 - Initial version
    V1.10, 09/03/2024 - Added parameters
#>

param (
    [Parameter(Mandatory = $true)]
    [string]$DomainName,
    [switch]$WhatIf,
    [switch]$Remote
)

# Output will be added to C:\temp folder. Open the log with a text editor.
Start-Transcript -Path C:\temp\Set-Primary-SMTP-Address.log -Append

# Ensure the domain starts with '@'
$PrimarySMTPDomain = "@" + $DomainName

# Choose the appropriate cmdlets based on the switch
if ($Remote) {
    $GetMailboxCmdlet = "Get-RemoteMailbox"
    $SetMailboxCmdlet = "Set-RemoteMailbox"
}
else {
    $GetMailboxCmdlet = "Get-Mailbox"
    $SetMailboxCmdlet = "Set-Mailbox"
}

# Get all mailbox users
$users = Invoke-Expression "$GetMailboxCmdlet -ResultSize Unlimited"

foreach ($user in $users) {
    $currentPrimarySMTP = $user.PrimarySmtpAddress.ToString()
    $aliasAddresses = $user.EmailAddresses | Where-Object { $_ -clike "smtp*" -and $_ -clike "*$PrimarySMTPDomain" }

    # Check if the current primary SMTP address ends with the specified domain
    if ($currentPrimarySMTP -like "*$PrimarySMTPDomain") {
        Write-Host "Skipping $($user.DisplayName) - Primary SMTP already ends with $PrimarySMTPDomain" -ForegroundColor Yellow
    }
    elseif ($aliasAddresses.Count -eq 1) {
        $newPrimarySMTP = $aliasAddresses -replace "smtp:", ""
        Write-Host "Updating primary SMTP for $($user.DisplayName) to $newPrimarySMTP" -ForegroundColor Green

        # Set the new primary SMTP address
        if ($WhatIf) {
            Invoke-Expression "$SetMailboxCmdlet -Identity '$($user.Identity)' -PrimarySmtpAddress '$newPrimarySMTP' -EmailAddressPolicyEnabled `$false -WhatIf"
        }
        else {
            Invoke-Expression "$SetMailboxCmdlet -Identity '$($user.Identity)' -PrimarySmtpAddress '$newPrimarySMTP' -EmailAddressPolicyEnabled `$false"
        }
    }
    elseif ($aliasAddresses.Count -eq 0) {
        Write-Host "No alias address found for $($user.DisplayName) - Primary SMTP not updated" -ForegroundColor Cyan
    }
    else {
        Write-Host "Multiple alias addresses found for $($user.DisplayName) - Primary SMTP not updated" -ForegroundColor Red
    }
}

Stop-Transcript

PowerShell-Skript zur Massenfestlegung der primären SMTP-Adresse

Das Skript funktioniert für lokale Exchange- und Exchange-Hybridumgebungen. Es ist wichtig, dass Sie die Exchange-Verwaltungsshell als Administrator ausführen.

Gehen Sie zum Skriptpfad und führen Sie das Skript „Set-PrimaryAddress.ps1“ aus. Das Skript durchsucht alle Postfächer in der Exchange-Organisation.

C:\scripts\.\Set-PrimaryAddress.ps1 -DomainName "exoip.nl" -WhatIf

Angenommen, Sie möchten die Cloud-Postfächer in einer Exchange-Hybridumgebung als Ziel verwenden, müssen Sie den Parameter -Remote hinzufügen. Dies ändert sich von Get-Mailbox zu Get-RemoteMailbox, um alle Cloud-Postfächer abzurufen, und Set-Mailbox wird zu Set-RemoteMailbox, um die Änderungen auf die Cloud-Postfächer anzuwenden.

C:\scripts\.\Set-PrimaryAddress.ps1 -DomainName "exoip.nl" -Remote -WhatIf

Hinweis: Es gibt einen -WhatIf-Parameter für einen Probelauf, damit nichts passiert, und Sie können die PowerShell-Ausgabe noch einmal überprüfen, wenn alles wie gewünscht aussieht. Sobald alles gut aussieht, entfernen Sie den Parameter -WhatIf und führen Sie das Skript erneut aus.

C:\scripts\.\Set-PrimaryAddress.ps1 -DomainName "exoip.nl"

Wenn mehrere Alias-Adressen für ein Postfach vorhanden sind, werden keine Änderungen übernommen und die Ausgabe zeigt diese Informationen an, damit Sie sie überprüfen können.

In diesem Beispiel wird die bestehende Alias-Adresse mit der Domäne @exoip.nl in großen Mengen als primäre SMTP-Adresse festgelegt.

Transcript started, output file is C:\temp\Set-Primary-SMTP-Address.log
Multiple alias addresses found for Alysia Maverick - Primary SMTP not updated
No alias address found for Boris Campbell - Primary SMTP not updated
Updating primary SMTP for  Christopher Payne to Christopher.Payne@exoip.nl
No alias address found for Discovery Search Mailbox - Primary SMTP not updated
Updating primary SMTP for  James Paterson to James.Paterson@exoip.nl
No alias address found for Fraser, Max - Primary SMTP not updated
Updating primary SMTP for Nicholas Murray to Nicholas.Murray@exoip.nl
No alias address found for Richard Hunter - Primary SMTP not updated
No alias address found for sharedmailboxonprem - Primary SMTP not updated
Transcript stopped, output file is C:\temp\Set-Primary-SMTP-Address.log

Die vorhandene SMTP-Aliasadresse ist jetzt die primäre SMTP-Adresse für alle Benutzer.

Lesen Sie mehr: Senden von Alias in Office 365 »

Abschluss

Sie haben gelernt, wie Sie mit PowerShell eine Alias-Adresse in großen Mengen als primäre SMTP-Adresse festlegen. Laden Sie zunächst das PowerShell-Skript „Set-PrimaryAddress“ herunter. Fügen Sie dann die Domäne in den Befehl ein, nach dem in den Postfach-Aliasadressen gesucht werden soll. Führen Sie abschließend das Skript aus. Denken Sie daran, zuerst mit dem Parameter -WhatIf zu testen.

Hat Ihnen dieser Artikel gefallen? Möglicherweise gefällt Ihnen auch „Freigegebenes Postfach mit demselben Alias erstellen“. Vergessen Sie nicht, uns zu folgen und diesen Artikel zu teilen.

Verwandte Artikel