Как использовать 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.
Надеюсь, вы нашли эту статью полезной. Если у вас есть какие-либо вопросы, просто оставьте комментарий ниже. Вам также могут понравиться следующие статьи:
- Найдите почтовый ящик по адресу электронной почты

