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-TranscriptHromadná 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" -WhatIfPř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 -WhatIfPozná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.logStá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.














