Вывести все SMTP адреса в Exchange Server/Microsoft 365

Периодически возникает задача выгрузить полный список email адресов в организации Exchange. В этой статье мы покажем, как с получить и экспортировать в CSV файл все назначенные SMTP адреса в Exchange Server или Microsoft 365 (Exchange Online) с помощью PowerShell.

Подключитесь к своей организации Exchange:

Чтобы вывести все основные и дополнительные SMTP алиасы для определенного почтового ящика Exchange, выполните команду:

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

вывести все smtp адреса ящика exchange

Как вы видите, пользователю назначены несколько дополнительных SMTP адресов, которые хранятся в строковом атрибуте EmailAddresses . В этом атрибуте могут находится и другие типы адресов, поэтому чтобы получить список всех SMTP адресов ящика в виде списка, выполните:

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

Следующая команда выведет основные адреса и алиасы для всех ящиков пользователей и общих почтовых ящиков Exchange и экспортируем результаты в CSV файл:

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

Командлет Get-Mailbox выводит информацию только о почтовых ящиках пользователей и общих ящиках.

В Active Directory (или Azure AD) могут быть другие типы объектов, которым назначены SMTP адреса (mail-enabled objects): группы рассылки, контакты, группы Microsoft 365 (Unified Groups в Azure) Для вывода списка SMTP адресов всех объектов в организации/тенанте Exchange используйте командлет Get-Recipient:

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

Экспорт всех почтовых адресов Exchange в CSV файл

В данном случае мы вывели SMTP адреса всех типов объектов. Если вам нужно экспортировать только SMTP адреса определенного типа объектов, добавьте в первый командлет параметр:

Get-Recipient -ResultSize Unlimited -RecipientType типобьекта | …

Возможные типы объектов Exchnage:

  • DynamicDistributionGroup
  • MailContact
  • MailNonUniversalGroup
  • MailUniversalDistributionGroup
  • MailUniversalSecurityGroup
  • MailUser
  • PublicFolder
  • UserMailbox
Если вам нужно найти объекты Exchange с одинаковыми SMTP адресами, выполните:

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

Также можно выгрузить плоский список SMTP адресов в вашем Exchange с помощью команды:

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

Выгрузить список почтовых ящиков в Exchange Online

Вывести количество уникальных SMTP адресов в вашей организации Exchange:

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

количество назначенных почтовых адресов в exchange


Предыдущая статья Следующая статья


Комментариев: 1 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)