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

Čas od času může být nutné exportovat úplný seznam e-mailových adres ve vaší organizaci Exchange. V tomto článku si ukážeme, jak získat a exportovat všechny přiřazené adresy SMTP do souboru CSV na Exchange Server nebo Microsoft 365 (Exchange Online) pomocí PowerShellu.

Připojte se k vaší organizaci Exchange:

  • Modul Exchange Management Shell (EMS) můžete použít ke správě místního Exchange Serveru nebo se můžete k Exchange připojit vzdáleně z běžné konzoly PowerShellu;
  • Pomocí modulu Exchange Online PowerShell (EXO) připojte tenanta Microsoft 365. K přihlášení k Exchange Online z prostředí PowerShell můžete použít ověřování na základě certifikátu.

Chcete-li zobrazit všechny primární a další adresy SMTP pro konkrétní poštovní schránku Exchange, spusťte tento příkaz:

Get-Mailbox testmax |Select-Object DisplayName,PrimarySmtpAddress,EmailAddresses|fl

  • TheSMTPadresa velkými písmeny obsahuje primární e-mailovou adresu
  • Malá písmenasmtphodnoty jsou sekundární (alias) e-mailové adresy.

Atribut proxyAddresses se používá k nastavení adresy pro doručování e-mailů v místní službě Active Directory.

Jak vidíte, uživateli je přiřazeno několik dalších adres SMTP, které jsou uloženy v řetězcovém atributu EmailAddresses. V tomto atributu mohou být i jiné typy adres, takže pro získání seznamu všech SMTP adres poštovní schránky spusťte níže uvedený příkaz:

Get-Mailbox testmax | Select-Object DisplayName,PrimarySmtpAddress, @{Name="SMTPAliases";Expression={($_.EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object {$_ -replace "smtp:",""}) -join "," }}

Následující příkaz zobrazí všechny primární adresy a aliasy pro všechny uživatelské poštovní schránky a sdílené poštovní schránky na Exchange a exportuje výsledky do souboru CSV:

Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName,PrimarySmtpAddress, @{Name="SMTPAliases";Expression={($_.EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object {$_ -replace "smtp:",""}) -join "," }} | Export-Csv "C:PSList-All-SMTP-Addresses.csv" -NoTypeInformation -Encoding UTF8

TheGet-Mailboxcmdlet zobrazuje pouze informace o uživatelích a sdílených poštovních schránkách.

Další informace:Odesílání e-mailů z prostředí PowerShell přes Exchange Server

Ve službě Active Directory (nebo Azure AD) mohou být další typy objektů s přiřazenými adresami SMTP (objekty s povolenou poštou): distribuční skupiny, kontakty a skupiny Microsoft 365 (Unified Groups v Entra ID). PoužijteZískejte příjemcecmdlet k zobrazení seznamu adres SMTP všech objektů v organizaci/tenantovi Exchange:

Get-Recipient -ResultSize Unlimited | Select-Object DisplayName, RecipientType, PrimarySmtpAddress, @{Name="SMTPAliases";Expression={($_.EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object {$_ -replace "smtp:",""}) -join "," }}

V tomto případě máme seznam SMTP adres všech typů objektů Exchange. Chcete-li exportovat pouze adresy SMTP určitého typu objektu, přidejte do první rutiny následující parametr

Get-Recipient -ResultSize Unlimited -RecipientType your_object_type | …

Možné typy objektů Exchange:

  • DynamicDistributionGroup
  • MailContact
  • MailNonUniversalGroup
  • MailUniversalDistributionGroup
  • MailUniversalSecurityGroup
  • Uživatel pošty
  • PublicFolder
  • Uživatelská schránka

Pokud potřebujete najít objekty Exchange se stejnou (duplicitní) adresou SMTP příjemce, spusťte:

Get-Recipient -resultsize unlimited | where {$_.EmailAddresses -like "*[email protected]*"}

Můžete také získat plochý seznam SMTP adres na Exchange:

Get-Recipient | Select-Object -ExpandProperty EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object { $_.Replace("smtp:", "").Replace("SMTP:", "") }

Pro kanál Microsoft Teams byly také vygenerovány jedinečné adresy SMTP.

Zobrazení počtu jedinečných adres SMTP ve vaší organizaci Exchange:

Get-Recipient -ResultSize Unlimited | Select-Object -ExpandProperty EmailAddresses | Where-Object { $_ -match "^smtp:" }| measure-object

Related Posts