Поиск по сайту:

Как использовать Get-Mailbox в PowerShell


Хотите экспортировать все почтовые ящики из Exchange? Или нужно проверить настройки почтового ящика определенного пользователя? С помощью команды Get-Mailbox в PowerShell мы можем быстро извлечь всю необходимую информацию с сервера Exchange Online.

Вы можете найти практически всю информацию о почтовых ящиках в Центре администрирования Exchange, но, как вы могли заметить, это не всегда самый быстрый способ получить информацию. Особенно когда вы хотите получить или экспортировать информацию о почтовых ящиках нескольких пользователей, тогда вам понадобится использовать PowerShell.

В этой статье мы рассмотрим, как использовать командлет Get-Mailbox в PowerShell. Я приведу несколько полезных примеров, когда дело доходит до поиска и экспорта информации о почтовых ящиках. И в качестве бонуса я добавил полный сценарий для получения самой важной информации из ваших почтовых ящиков.

Установите модуль Exchange Online

Прежде чем мы сможем использовать командлет Get-Mailbox в PowerShell, вам нужно установить модуль Exchange Online. Убедитесь, что вы установили последнюю версию модуля Exchange Online v3, который можно использовать в PowerShell 5 и 7.

Заметка

Командлет Get-Mailbox также может использоваться на локальном сервере Exchange версии 2010 и выше, но для локальной версии вам потребуется использовать оболочку управления Exchange.

В этой статье я сосредоточусь на сервере Exchange Online. Убедитесь, что вы подключены к Exchange Online:

Connect-ExchangeOnline -UserPrincipalName a-d@lazydev.onmicrosoft.com

Поиск почтовых ящиков с помощью получения почтового ящика в PowerShell

Команда Get Mailbox позволяет нам находить почтовые ящики на сервере Exchange Online и извлекать из них информацию. Преимущество этой команды заключается в том, что мы можем использовать различные параметры для поиска или фильтрации почтовых ящиков.

Мы можем использовать следующие варианты для поиска почтовых ящиков:

  • Anr – Найдите почтовый ящик по части имени (неоднозначное разрешение имен)
  • Идентичность - Найдите почтовый ящик по имени, имени домена пользователя или адресу электронной почты
  • Фильтр – Получить несколько почтовых ящиков на основе запроса
  • MailboxPlan – Получите все почтовые ящики, которым назначен конкретный план почтового ящика
  • Детали типа получателя – Возвращает только указанный тип почтового ящика

Если вы знаете адрес электронной почты или имя почтового ящика, который вам нужен, то параметр идентификатора является самым распространенным способом выбора почтового ящика:

Find the mailbox on name or alias
Get-Mailbox -Identity adelev

Using the email address to find the mailbox
Get-Mailbox -Identity adelev@lazydev.onmicrosoft.com

Получить почтовый ящик

Быстрым способом найти нужный почтовый ящик является использование менее известного параметра -anr. Это выполнит поиск разрешения неоднозначных имен с указанной строкой и вернет все почтовые ящики, которые соответствуют. Поиск выполняется по следующим атрибутам:

  • CommonName
  • Отображаемое имя
  • Имя и фамилия
  • Псевдоним

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

Get-Mailbox -anr ade

Используя опцию фильтра

Команда Get-Mailbox содержит множество свойств, и мы можем использовать большинство из них для фильтрации результатов почтовых ящиков. Итак, давайте рассмотрим несколько часто используемых примеров для поиска почтовых ящиков:

Чтобы найти почтовый ящик по части имени, вы можете использовать параметр -anr, как упоминалось ранее. Но мы также можем использовать фильтр, конечно. Преимущество фильтра перед anr заключается в том, что вы можете отфильтровывать все почтовые ящики, которые начинаются или заканчиваются на указанную строку:

Get all mailboxes that start with 'di'
Get-Mailbox -Filter "Displayname -like 'di*'"

Or get all mailboxes where the name ends with 'test'
Get-Mailbox -Filter "Name -like '*test'"

Фильтровать почтовые ящики по квоте

Когда вы хотите отфильтровать почтовые ящики по одному из квот (Архив, ЗапретитьОтправкуКвоты, ВыдатьПредупреждение и т.д.), то вы могли заметить, что не сможете отфильтровать по размеру квоты. Например, это не сработает:

Get-Mailbox -Filter "IssueWarningQuota -lt '50GB'"

Проблема в том, что вы можете использовать фильтр только в сочетании с квотой, чтобы проверить, установлено ли свойство в режим без ограничений или нет:

Get all mailboxes were the ProhibitSendReceiveQuota is set to unlimited
Get-Mailbox -Filter "ProhibitSendReceiveQuota -eq 'Unlimited'"

Or not set to unlimited
Get-Mailbox -Filter "ProhibitSendReceiveQuota -ne 'Unlimited'"

Чтобы «фильтровать» по фактическому значению, нам нужно будет получить все почтовые ящики и использовать фильтр where:

Get all mailboxes where the issue warning quota is less then 50GB
Get-Mailbox | where {$_.IssueWarningQuota -lt '50GB'}

Получить почтовые ящики на основе MailboxPlan

Параметр -MailboxPlan позволяет нам получить все почтовые ящики, которым назначен конкретный почтовый план. Первый шаг - получить все доступные планы в вашем арендаторе:

Get-MailboxPlan | Select DisplayName | ft

Result
DisplayName
-----------
ExchangeOnline
ExchangeOnlineEnterprise
ExchangeOnlineEssentials
ExchangeOnlineDeskless

Мы можем использовать имена отображения из планов для фильтрации почтовых ящиков:

Get all the mailboxes with the Exchange ONline plan (most of the time shared or resource mailboxes)
Get-Mailbox -MailboxPlan ExchangeOnline

Фильтр по RecipientTypeDetails

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

  • RoomMailbox
  • SharedMailbox
  • TeamMailbox
  • GroupMailbox
  • EquipmentMailbox

И это даже не все типы, но они самые распространенные. С параметром RecipientTypeDetails мы можем фильтровать результаты на основе типа почтового ящика. Так что если вы хотите получить все общие почтовые ящики, вы можете просто использовать следующий cmdlet:

Get all Shared mailboxes
Get-Mailbox -RecipientTypeDetails SharedMailbox

Or all (meeting) room mailboxes
Get-Mailbox -RecipientTypeDetails RoomMailbox

Получить все почтовые ящики

Чтобы просто получить все почтовые ящики, нам не нужно указывать никаких фильтров. Вам нужно только установить ResultSize на неограниченное:

Get-Mailbox -ResultSize unlimited

Совет

Как упоминалось в начале, лучше использовать командлет Get-EXOMailbox с Exchange Online. Это гораздо быстрее, чем командлет Get-Mailbox. Например, получение 230 почтовых ящиков с помощью Get-Mailbox занимает 4,1 секунды, а с помощью Get-EXOMailbox - только 2,4 секунды.

Получить неактивные или архивные почтовые ящики

Чтобы получить все неактивные почтовые ящики, мы можем использовать параметр -InactiveMailboxOnly

Get-Mailbox -InactiveMailboxOnly

А для архивных почтовых ящиков вы можете использовать параметр -Archive

Get-Mailbox -Archive

Получить свойства почтового ящика

Cmdlet Get-Mailbox возвращает много свойств, почти 250! Многие из этих свойств не актуальны в большинстве случаев использования. Мы можем отфильтровать результаты, выбрав только те свойства, которые нам нужны. Чтобы помочь вам начать, у меня есть несколько советов/примеров.

Get-Mailbox -anr adel | Select DisplayName, PrimarySMTPAddress, RecipientTypeDetails, ProhibitSendReceiveQuota, WhenMailboxCreated, UsageLocation

Получить свойства почтового ящика

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

Get-Mailbox -Resultsize unlimited | Select displayname, *quota*

Result
ProhibitSendQuota            : 99 GB (106,300,440,576 bytes)
ProhibitSendReceiveQuota     : 100 GB (107,374,182,400 bytes)
RecoverableItemsQuota        : 30 GB (32,212,254,720 bytes)
RecoverableItemsWarningQuota : 20 GB (21,474,836,480 bytes)
CalendarLoggingQuota         : 6 GB (6,442,450,944 bytes)
UseDatabaseQuotaDefaults     : False
IssueWarningQuota            : 98 GB (105,226,698,752 bytes)
RulesQuota                   : 256 KB (262,144 bytes)
ArchiveQuota                 : 100 GB (107,374,182,400 bytes)
ArchiveWarningQuota          : 90 GB (96,636,764,160 bytes)

Экспортировать информацию о почтовом ящике в CSV

Команда Get-Mailbox часто используется для извлечения информации о почтовом ящике с сервера Exchange. Хороший способ последующей обработки информации - экспортировать результаты в Excel. Мы можем сделать это с помощью опции Export-CSV. Вы можете просто экспортировать любой набор результатов, добавив Export-CSV после вашей команды:

Export all mailbox quotas to CSV
Get-Mailbox -Resultsize unlimited | Select displayname, *quota* | Export-CSV -NoTypeInformation

Я также создал несколько скриптов, связанных с информацией о почтовом ящике, которые могут показаться вам интересными:

  • Экспортировать все разрешения на почтовый ящик
  • Экспорт размеров почтовых ящиков

Завершение

Не забудьте также ознакомиться с новыми командами Exchange Online, такими как Get-EXOMailbox, которые предлагают лучшую производительность и надежность по сравнению со старыми командами. Для быстрого поиска почтовых ящиков убедитесь, что вы попробовали параметр anr.

Надеюсь, вы нашли эту статью полезной. Если у вас есть какие-либо вопросы, просто оставьте комментарий ниже. Вам также могут понравиться следующие статьи:

  • Найдите почтовый ящик по адресу электронной почты