PowerShell ile takma ad adresini birincil SMTP adresine değiştirin


Her posta kutusu kümesi için zaten birincil SMTP adresiniz ve takma ad adresiniz var. Ancak görev, takma ad adresini birincil SMTP adresiyle değiştirmektir. Bunu yapmanın en iyi yolu PowerShell'dir. Bu yazıda PowerShell ile Exchange Server'da takma ad adresini birincil SMTP adresine nasıl değiştireceğinizi öğreneceksiniz.

giriiş

Set-PrimaryAddress.ps1 PowerShell betiği aşağıdakiler için çalışır:

  • Şirket içi değişim
  • Değişim Hibrit

Aynısını Exchange Online (Microsoft 365) ortamı için yapmak istiyorsanız PowerShell ile Microsoft 365 diğer ad adresini birincil SMTP adresiyle değiştirmemakalesini okuyun.

Not: Takma ad smtp adresi birincil SMTP adresi olur ve birincil SMTP adresi bir takma ad adresi olur. Dolayısıyla birincil SMTP adresi kaldırılmayacaktır; sadece takma ad smtp adresiyle değiştirilir.

Başlamadan önce

Her posta kutusu için önceden ayarlanmış bir takma ad adresi yoksa ne olur? En iyisi PowerShell ile toplu ikincil SMTP adresi ekleme makalesini incelemektir.

Tüm posta kutuları için takma ad adresinin ayarlandığını doğruladıktan sonra, takma ad adresini birincil SMTP adresiyle değiştirmek için bu makaledeki Set-PrimaryAddress.ps1 PowerShell betiğini çalıştırın.

İşinizi tamamladığınızı ve artık bir takma ad adresi olan eski birincil SMTP adresini kaldırmak istediğinizi varsayalım. PowerShell ile ikincil SMTP adresini toplu kaldırma makalesini inceleyebilirsiniz.

Her şeyin doğru ayarlandığından emin olmanız için her şeyi anında yapan tek bir komut dosyası yerine, bunu aşamalı olarak yapmak her zaman daha iyidir.

Birincil SMTP adresini ayarlama PowerShell betiğini hazırlayın

Set-PrimaryAddress.ps1 PowerShell betiğini indirin veya aşağıdaki kodu kopyalayıp Not Defteri'ne yapıştırın. Ona Set-PrimaryAddress.ps1 adını verin ve C:\scripts klasörüne yerleştirin. Eğer yoksa bir Komut Dosyaları klasörünüz oluşturun.

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

Toplu ayarlama Birincil SMTP adresi PowerShell betiği

Komut dosyası, şirket içi Exchange ve Exchange Hibrit ortamları için çalışır. Exchange Management Shell'i yönetici olarak çalıştırmanız önemlidir.

Betik yoluna gidin ve Set-PrimaryAddress.ps1 betiğini çalıştırın. Komut dosyası, Exchange organizasyonundaki tüm posta kutularından geçecektir.

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

Exchange Hibrit ortamında bulut posta kutularını hedeflemek istediğinizi varsayalım, -Remote parametresini eklemeniz gerekir. Bu, tüm bulut posta kutularını almak için Get-Mailbox yerine Get-RemoteMailbox olarak değişecek ve Set-Mailbox Set-RemoteMailbox.

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

Not: Hiçbir şeyin olmamasını sağlamak amacıyla deneme için bir -WhatIf parametresi vardır ve her şeyin istediğiniz gibi görünüp görünmediğini PowerShell çıkışını bir kez daha kontrol edebilirsiniz. Her şey yolunda göründüğünde -WhatIf parametresini kaldırın ve komut dosyasını yeniden çalıştırın.

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

Bir posta kutusu için birden fazla takma ad adresi mevcutsa, herhangi bir değişiklik uygulanmaz ve inceleyebilmeniz için çıktı bu bilgiyi gösterir.

Bu örnekte, @exoip.nl etki alanına sahip mevcut takma ad adresi, birincil SMTP adresi olarak toplu olarak ayarlanacaktır.

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

Mevcut smtp takma adı adresi artık tüm kullanıcılar için birincil SMTP adresidir.

Devamını oku: Office 365'teki Takma Addan Gönder »

Çözüm

PowerShell ile takma ad adresini birincil SMTP adresi olarak toplu olarak nasıl ayarlayacağınızı öğrendiniz. Öncelikle Set-PrimaryAddress PowerShell betiğini indirin. Ardından alan adını, posta kutusu takma ad adreslerinde aramasını istediğiniz komuta ekleyin. Son olarak betiği çalıştırın. İlk önce -WhatIf parametresiyle test etmeyi unutmayın.

Bu makaleyi beğendiniz mi? Aynı takma adla paylaşılan posta kutusu oluşturma seçeneğini de beğenebilirsiniz. Bizi takip etmeyi ve bu makaleyi paylaşmayı unutmayın.

İlgili makaleler