- Вывести все ящики, к которым есть доступ у определенного пользователя Exchange/Microsoft 365
- Найти ящики Exchange/Microsoft 365, к которым есть доступ у определенного пользователя
- Поиск папок в ящиках, на которые предоставлен доступ пользователю Exchange/Microsoft 365
- Вывести список ящиков exchange
- Как выгрузить список почтовых ящиков в Exchange Server
- Бонусный скрипт получения списка адресов с размерами
- Используйте Exchange Online PowerShell для отображения Microsoft 365 или Office 365 почтовых ящиков
- Подготовка
- Отображение данных почтовых ящиков с помощью Exchange Online PowerShell
Вывести все ящики, к которым есть доступ у определенного пользователя Exchange/Microsoft 365
Довольно часто при аудите ящиков в организации Exchange Server или тенанте Microsoft 365 (Exchange Online) администратору нужно найти все ящики, к которым есть доступ у определенного пользователя. В этой статье мы рассмотрим несколько PowerShell скриптов для получения отчетов по доступам к ящикам и папкам в ящиках Exchange.
Найти ящики Exchange/Microsoft 365, к которым есть доступ у определенного пользователя
Для получения списка разрешений, назначенных на ящик используется командлет Get-MailboxPermission.
Откройте консоль PowerShell и подключитесь удаленно к своему on-prem Exchange Server или тенанту Microsoft 365 (Exchange Online).
Следующая команда выведет список пользователей, у которых есть права на указанный ящик:
get-mailboxpermission -identity maxadm@winitpro.onmicrosoft.com |ft -AutoSize
В данном примере видно, что у пользователей GradyA и HenriettaM есть полные права ( Full Access ) на ящик указанного пользователя. Данные права установлены вручную (не наследованы), т.к. IsInherited = False.
Можно вывести полный отчет по назначенным правам на ящики и представить его в виде удобной таблицы Out-GridView
С помощью следующей команды PowerShell вы можете найти и вывести список ящиков в вашей организации Exchange или тенанте, на которых у определенного пользователя есть полные права:
Get-Mailbox -ResultSize Unlimited | Get-MailboxPermission -User «HenriettaM» | ft User,Identity,AccessRights
В этом примере мы нашли, что у указанного пользователя есть полный доступ к трем ящикам (столбец Identity).
В Microsoft 365 можно использовать новые командлеты модуля Exchange Online PowerShell v2 (EXO V2) для получения такого списка:
Get-EXOMailbox -ResultSize Unlimited | Get-EXOMailboxPermission -Identity $_.Identity | Where-Object
Вы можете использовать фильтры по типу ящика. Это ускорит поиск. Для этого добавьте к команде Get-EXOMailbox или Get-Mailbox параметр – RecipientTypeDetails с типом ящиков, по которым выполнять поиск:
- DiscoveryMailbox
- EquipmentMailbox
- GroupMailbox
- LegacyMailbox
- LinkedMailbox
- LinkedRoomMailbox
- RoomMailbox
- SchedulingMailbox
- SharedMailbox
- TeamMailbox
- UserMailbox
Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails SharedMailbox| Get-MailboxPermission -User «HenriettaM» | ft User,Identity,AccessRights
Найти ящики пользователей, на которые у определенного пользователя есть права SenAs:
Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited | Get-RecipientPermission -Trustee HenriettaM
Также можно найти ящики с правами Send on behalf:
Поиск папок в ящиках, на которые предоставлен доступ пользователю Exchange/Microsoft 365
Кроме назначения прав на весь ящик в Exchange (Microsoft 365) можно предоставить доступ другому пользователя к конкретной папке. Например, только к папке Входящие или к Календарю. При аудите доступа пользователей иногда нужно найти не только ящики с правами FullAccess, но и конкретные папки в ящиках пользователей, на которые назначен доступ другим пользователям.
Вы можете вывести разрешения на конкретную папку с помощью командлета Get-MailboxFolderPermission, а с помощью Get-MailboxFolderStatistics можно получить список папок в указанном ящике.
Следующий PowerShell скрипт проверяет все ящики в вашей организации и выводит папки (включая вложенные), на которые дан доступ определенному пользователю.
Этот PowerShell скрипт выведет все папки в ящиках других пользователей, на которых дан доступ определённому пользователю. Выводится имя ящика (Identity), имя папки (FolderName) и назначенные разрешения на папку (Editor, Reviewer и т.д.):
Для поиска и удаления отдельных писем в ящике используется командлет Search-Mailbox.
Источник
Вывести список ящиков exchange
Добрый день! Уважаемые читатели и гости лучшего IT блога страны pyatilistnik.org. В прошлой статье, о автоматическом подключении почтового ящика в Outlook, я рассказал, что буду чаще рассказывать про Microsoft Exchange Server, который я долго обходил стороной. Продолжаю придерживаться своему обещанию, и сегодня хочу поведать, о том как можно выгрузить список почтовых ящиков в Exchange Server, это очень часто встречающаяся необходимость, которую выполняют системные администраторы в свои трудовые будни. Я расскажу, как фильтровать все это дело, подсчитывать общее количество почтовых ящиков, и научу все это выгружать в текстовый файл, для последующего анализа. Уверен, что данная заметка окажется весьма полезной, тем людям, кто только начал работать с этим монстром от Microsoft.
Как выгрузить список почтовых ящиков в Exchange Server
Хочу отметить, что данные команды будут работать как на Microsoft Exchane Server 2010, так и на 2013-16. И так, первая задача, узнать какие активные почтовые ящики есть на нашем Exchange Server, для выполнения нашей задачей мы воспользуется командлетом powershell Get-Mailbox . Открываем Exchange Management Shell (EMS), она находится в меню «Пуск»
Кстати Exchange Management Shell (EMS) имеет, только в 2010 SP1 почтовом сервере, свыше 500-та командлетов, так, что работать в ней можно очень серьезно.
Пишем вот такую команду:
На выходе вы получаете список ящиков, учьтите, что время получения результата, прямо завит от количества почт на сервере Exchane, поэтому консоль powershell может подвисать. У меня получился вот такой вывод, содержащий адреса электронных почтовых ящиков Exchange, вы сразу у себя заметите, что вывод команды отдается все не по алфавиту, что не всегда удобно для анализа.
Чтобы выгрузка списка почтовых адресов была по алфавиту, то вам нужно слегка видоизменить вашу команду:
В итоге я уже получил список почтовых ящиков в базе Exchange, отформатированный по алфавиту, что позволяет более упрощенно производить поиск п/я.
Но результаты выгрузки списка почтовых ящиков могут быть длинными и не умещаться на экране вывода powershell, для этого удобно все это дело будет выгрузить в текстовый файл, по которому легко будет и производить поиск и фильтровать. Для этого в есть командлет Out-File .
- Где Out-File C:\scripts\all_mailbox.txt — это путь до файла all_mailbox.txt в папке C:\scripts\, вы его меняете на свое значение
[PS] WARNING: By default, only the first 1000 items are returned. Use the ResultSize parameter to specify the number of items returned. To return all items, specify «-ResultSize Unlimited». Be aware that, depending on the actual number of items, returning all items can take a long time and consume a large amount of memory. Also, we don’t recommend storingn the results in a variable. Instead, pipe the results to another task or script to perform batch changes.
Обратите внимание, что по умолчанию выводится только 1000 ящиков, если нужно больше, то придется ввести параметр -ResultSize Unlimited.
Теперь давайте мы узнаем информацию, сколько у нас адресов почтовых ящиков в базе почтового сервера, для этого выполните:
У меня на одном из серверов их оказалось 2159 штук.
Еще бывают задачи от руководства или сотрудников, это посчитать и получить список почтовых ящиков на определенном домене, если кто-то не в курсе, то Microsoft Exchange Server позволят обслуживать огромное количество доменов, это нормальная практика. В итоге мы воспользуемся вот такой конструкцией.
Если вы хотите получить названия почтовых адресов в организации, чаще всего это ФИО и дату их создания, то выполните такую команду:
Как видите я получил точную дату, когда были созданы почты в организации и кому в плане ФИО, они принадлежат.
Чтобы выгрузить список пользователей, которые не заходили в почтовый ящик более, чем 30 дней с выгрузкой в файл, то выполните
Это позволит вам выявить пользователей, кто за зря занимает место в базе данных Exchange сервера. Еще могут быть ситуации, когда вам нужно выяснить какие почтовые адреса были созданы вашей почтовой системе, например, за последние 20 дней, для этого выполните:
Обратите внимание, что в выводе ft, вы можете задавать много параметров, например, база данных database. Можно даже узнать, за конкретный месяц, так, например, получите список почтовых ящиков за сентябрь
Ну и за весь год, на момент написания статьи это 2018 год.
Напоминаю, чтобы посчитать количество, вам нужно воспользоваться Measure-Object
Бонусный скрипт получения списка адресов с размерами
В выводе будет реальный размер почтовых ящиков в базе данных Exchange сервер с учетом удаленных писем из каталога Recoverable Items. Скачать готовый скрипт можно по ссылке слева.
Как видите получить список всех почтовых адресов в организации Exchange, очень просто, для этого не нужно быть гуру Powershell и мега крутым программистом, достаточно выучить несколько конструкций и ключей.
Источник
Используйте Exchange Online PowerShell для отображения Microsoft 365 или Office 365 почтовых ящиков
Ознакомьтесь с новым центром администрирования Exchange! Этот опыт является современным, интеллектуальным, доступным и более лучшим. Персонализация панели мониторинга, управление перекрестной миграцией клиентов, улучшение функции Группы и другие. Попробуйте прямо сейчас!
Администраторы могут научиться использовать Exchange Online PowerShell для отображения сведений о почтовых ящиках в Microsoft 365 или Office 365 организации.
Чтобы получить представление о некоторых действиях, которые можно сделать с PowerShell в Microsoft 365 и Office 365, давайте рассмотрим почтовые ящики пользователей в Exchange Online PowerShell.
Подготовка
Сведения о том, как подключиться к Exchange Online PowerShell, см. в статье Подключение к Exchange Online PowerShell.
Отображение данных почтовых ящиков с помощью Exchange Online PowerShell
Вы можете легко получить сведения о почтовом ящике одного пользователя. Например, ниже приведена команда, которая возвращает некоторые сведения о почтовом ящике пользователя Ken Myer.
Эта команда возвращает приблизительно следующие данные:
Можно получить данные, такие как псевдоним пользователя и квота для размера почтового ящика. Однако с почтовым ящиком Exchange Online связано намного больше сведений, чем четыре свойства, которые возвращает командлет Get-Mailbox.
Вот пример команды, которая отображает все сведения об определенном почтовом ящике.
Команда дает среде Exchange Online PowerShell указание вернуть все доступные свойства почтового ящика в списке. Существует около 200 различных свойств и их значений. Вы также можете использовать командлеты Format-List и Format-Table, чтобы возвращались только значения определенных свойств. Например, с помощью этой команды вы можете просмотреть свойства, связанные с хранением для судебного разбирательства, для пользователя Ken Myer:
При работе с командлетом Format-List можно использовать подстановочные знаки. Например, все свойства удержания судебного разбирательства начинаются с lit букв. Вы можете получить эти же сведения, выполнив указанную ниже команду.
Эта команда сообщает Get-Mailbox, чтобы получить значение свойства DisplayName Кена вместе со значениями всех свойств с именами, которые начинаются с lit букв. Ниже показаны результаты выполнения этой команды.
Вы можете вернуть сведения о нескольких почтовых ящиках, оставив параметр Identity. В следующем примере возвращаются свойства DisplayName и LitigationHoldEnabled всех почтовых ящиков:
Во многих случаях требуется просматривать только некоторые из почтовых ящиков. Предположим, что вам требуется составить список всех почтовых ящиков, которым назначено хранение для судебного разбирательства. Для этого вы можете использовать командлет Where-Object в сочетании с командлетом Get-Mailbox. Для командлета Where-Object требуется выражение фильтра, чтобы сообщить среде Exchange Online PowerShell необходимый набор почтовых ящиков.
В простейшей форме фразы фильтра используют синтаксис «
Ниже перечислены некоторые из часто используемых операторов сравнения.
eq (равно, без учета регистра)
ne (не равно, без учета регистра)
Полный список операторов сравнения см. в статье Where-Object.
Значения зависят от свойства и могут быть значениями, например
строками, числами, значениями boolean $True (или) или без $False значения ( $Null ). Текстовые значения с пробелами требуют кавычка вокруг значения. Числимые значения, значения boolean и не требуют $Null кавычка вокруг значения.
Возвращаясь к нашему примеру всех почтовых ящиков, которые были назначены тяжбы, фраза «LitigationHoldEnabled -eq $True» фильтра:
Имя свойства LitigationHoldEnabled .
Оператор сравнения eq .
Значение свойства, который мы ищем, $True это .
После добавления выражения фильтра можно создать часть команды Where-Object, используя указанный ниже синтаксис.
Вот команда для нашего примера:
Приведем еще один пример. Предположим, вы хотите убедиться, что все ваши пользователи включили правило нежелательной почты. Ниже представлена команда, с помощью которой можно быстро определить, кто из пользователей этого не сделал.
Это лишь один пример. Если вы хотите отобразить набор почтовых ящиков на основе параметра и не можете фильтровать этот параметр в Центр администрирования Microsoft 365, сделайте следующие действия:
Найдите свойство почтового ящика, соответствующее интересуемой вам настройке, вы найдите команду, чтобы перечислить все свойства Get-Mailbox -Identity » почтового ящика. — это уникальный идентификатор почтового ящика (имя, адрес электронной почты, псевдоним и т.д.)
Состройте команду Office 365 PowerShell вот так: Get-Mailbox -ResultSize unlimited | Where-Object <$_.
Источник