Změňte aliasovou adresu na primární adresu SMTP pomocí PowerShellu

Pro každou sadu poštovních schránek již máte primární adresu SMTP a aliasovou adresu. Úkolem je však prohodit aliasovou adresu s primární SMTP adresou. Nejlepší způsob, jak toho dosáhnout, je pomocí PowerShellu. V tomto článku se dozvíte, jak změnit aliasovou adresu na primární adresu SMTP v Exchange Server s PowerShell.

Zavedení

Skript Set-PrimaryAddress.ps1 PowerShell funguje pro:

  • Výměna na místě
  • Hybridní výměna

Pokud byste chtěli udělat totéž pro prostředí Exchange Online (Microsoft 365), přečtěte si článek Změna adresy aliasu Microsoft 365 na primární adresu SMTP pomocí PowerShellu.

Poznámka:Aliasová adresa SMTP se stane primární adresou SMTP a primární adresa SMTP se stane aliasovou adresou. Primární adresa SMTP tedy nebude odstraněna; jen se zamění za alias smtp adresu.

Než začnete

Co když pro každou poštovní schránku již není nastaven žádný alias? Nejlepší je projít si článek Hromadné přidání sekundární SMTP adresy pomocí PowerShellu.

Jakmile ověříte, že je aliasová adresa nastavena pro všechny poštovní schránky, spusťte skript Set-PrimaryAddress.ps1 PowerShell z tohoto článku a zaměňte aliasovou adresu za primární adresu SMTP.

Předpokládejme, že jste hotovi a chcete odstranit starou primární adresu SMTP, která je nyní aliasovou adresou, můžete si projít článek Hromadné odstranění sekundární adresy SMTP pomocí PowerShellu.

Vždy je lepší to udělat po etapách než s jedním skriptem, který to udělá okamžitě, takže máte jistotu, že je vše správně nastaveno.

Připravte sadu skriptu PowerShell primární adresy SMTP

Stáhněte si skript Set-PrimaryAddress.ps1 PowerShell nebo zkopírujte a vložte níže uvedený kód do poznámkového bloku. Dejte tomu jménoSet-PrimaryAddress.ps1a umístěte jej doSložka C:scripts. Vytvořte aSkriptysložku, pokud žádnou nemáte.

<#
    .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:tempSet-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

Hromadná sada primární adresy SMTP skript PowerShell

Skript funguje pro prostředí Exchange on-premise a Exchange Hybrid. Je nezbytné, abyste spouštěli prostředí Exchange Management Shell jako správce.

Přejděte na cestu skriptu a spusťte skript Set-PrimaryAddress.ps1. Skript projde všemi poštovními schránkami v organizaci Exchange.

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

Předpokládejme, že chcete cílit na cloudové poštovní schránky v prostředí Exchange Hybrid, musíte přidat-Vzdálenýparametr. Toto se změní z Get-Mailbox na Get-RemoteMailbox, aby se načetly všechny cloudové poštovní schránky, a Set-Mailbox se změní na Set-RemoteMailbox, aby se změny aplikovaly na cloudové poštovní schránky.

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

Poznámka:Existuje a-Co kdybyparametr pro suchý běh, aby se nic nestalo, a můžete dvakrát zkontrolovat výstup PowerShellu, pokud vše vypadá, jak chcete. Jakmile vše vypadá dobře, odstraňte-Co kdybyparametr a znovu spusťte skript.

Další informace:Získejte všechny SMTP (e-mailové) adresy pomocí PowerShellu na Exchange

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

Pokud existuje více aliasových adres pro poštovní schránku, nepoužijí se žádné změny a na výstupu se zobrazí tato informace, abyste se do ní mohli podívat.

V tomto příkladu bude stávající alias adresa s doménou @exoip.nl hromadně nastavena jako primární adresa SMTP.

Transcript started, output file is C:tempSet-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 [email protected]
No alias address found for Discovery Search Mailbox - Primary SMTP not updated
Updating primary SMTP for  James Paterson to [email protected]
No alias address found for Fraser, Max - Primary SMTP not updated
Updating primary SMTP for Nicholas Murray to [email protected]
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:tempSet-Primary-SMTP-Address.log

Stávající aliasová adresa smtp je nyní primární adresou SMTP pro všechny uživatele.

Závěr

Naučili jste se, jak hromadně nastavit adresu aliasu jako primární adresu SMTP pomocí PowerShellu. Nejprve si stáhněte skript Set-PrimaryAddress PowerShell. Poté do příkazu přidejte doménu, kterou chcete vyhledat v aliasových adresách poštovní schránky. Nakonec spusťte skript. Nezapomeňte nejprve otestovat s parametrem -WhatIf.

Líbil se vám tento článek? Může se vám také líbit Vytvořit sdílenou poštovní schránku se stejným aliasem. Nezapomeňte nás sledovat a sdílet tento článek.

Related Posts