Создание общего почтового ящика с помощью Powershell в Exchange 2010

Задача - создать общий почтовый ящик и добавить права для него для нескольких пользователей. Для этого предварительно нужно создать учётку ящика в AD и выключить её.

Скрипт:

$identity = "mailbox"
$alias = "mailbox"
# Пользователи, для которых нужно дать доступ
$users = "vasya","petya"

# Создаём ящик
Enable-Mailbox -Identity $identity -Shared -Alias $alias -Database 'database'

# Права на полный доступ
Foreach ($user in $users)
          {
          Add-MailboxPermission -Identity $identity -User "Domain\$user" -AccessRights 'FullAccess'
          }

# Права на отправить как
Foreach ($user1 in $users)
          {
          Add-ADPermission -Identity $identity -User "Domain\$user1" -ExtendedRights 'Send-as'
          }
# Удалить права можно такими командами:
# Remove-MailboxPermission -Identity 'mailbox' -User 'Domain\vasya' -InheritanceType 'All' -AccessRights 'FullAccess'
# Remove-ADPermission -Identity 'mailbox' -User 'Domain\petya' -InheritanceType 'All' -ExtendedRights 'send-as' -ChildObjectTypes $null -InheritedObjectType $null -Properties $null

Поиск писем в почтовых ящиках с помощью Powershell в Exchange 2010. Search-mailbox

Чтобы воспользоваться в полной мере коммандлетом Search-mailbox, нужно добавить свою учётную запись в две группы Exchange:

Add-RoleGroupMember -Identity "Discovery Management" -Member admin
Add-RoleGroupMember -Identity "Mailbox Import Export Group" -Member admin

1. Поиск в ящике v.yurov по теме письма и удаление найденных писем:

Search-mailbox -Identity "v.yurov" -SearchQuery 'subject:"Mail delivery failed"' -DeleteContent

2. Поиск по ящику d.adrianovskiy от "Бизнес-школа СКОЛКОВО", полученного с 18 по 19 ноября 2016, копирование найденных писем в ящик admin и папку test:

Search-mailbox -Identity "d.adrianovskiy" -SearchQuery {from:"Бизнес-школа СКОЛКОВО" Received: 18/11/2016..19/11/2016 } -TargetMailbox "admin" -LogLevel full -TargetFolder test

3. Параметр EstimateResultOnly позволяет показать только результат поиска:

Search-mailbox -Identity "mailboxuser"  -SearchQuery  отправлено:"1/01/2017..27/01/2017", получено:"1/01/2017..27/01/2017" -EstimateResultOnly

Ещё примеры поиска:

Search-mailbox -Identity "mailboxuser" -SearchQuery кому:"mail@mail.ru", отправлено:"1/13/2017..8/11/2016" -TargetMailbox "mail" -TargetFolder "Archive" -LogLevel Full
Search-mailbox -Identity "mailboxuser"  -SearchQuery  получено:"7/2/2017..9/2/2017", тема:"RE: Tema"  -TargetMailbox "mailbox" -TargetFolder "Archive" -LogLevel Full  

Отслеживание сообщений в Microsoft Exchange 2010. Get-MessageTrackingLog

Журнал отслеживания сообщений содержит подробные сведения об обмене сообщениями с компьютером с сервером Microsoft Exchange Server 2010 и установленной ролью транспортного сервера-концентратора, сервера почтовых ящиков или пограничного транспортного сервера. Журналы отслеживания сообщений используются для исследования сообщений, анализа потока почты, создания отчетов и устранения неполадок.
Для выполнения всех задач настройки отслеживания сообщений на транспортном сервере-концентраторе или пограничном транспортном сервере можно использовать командлет Set-TransportServer. Для выполнения всех задач настройки отслеживания сообщений на сервере почтовых ящиков можно использовать командлет Set-MailboxServer. Для серверов, на которых установлена роль транспортного сервера-концентратора или сервера почтовых ящиков, можно использовать командлет Set-TransportServer или Set-MailboxServer.
По умолчанию файлы журналов отслеживания сообщений хранятся в каталоге C:\Program Files\Microsoft\Exchange Server\V14\TransportRoles\Logs\MessageTracking
Подробнее тут - https://technet.microsoft.com/ru-ru/library/bb124375(v=exchg.141)

Найти полученные сообщения пользователем vasya@daun.ru с адреса admin@vasiliy.ru с 12.12.2016 по 13.12.2016:

Get-MessageTrackingLog -EventId "Receive" -ResultSize Unlimited -Sender "admin@vasiliy.ru" -Recipient "vasya@daun.ru" -start "12/12/2016" -end "13/12/2016"

| Format-List в конце выдаст полную информацию по каждому найденному сообщению.

Where-Object позволяет искать по маске:

Get-MessageTrackingLog -EventId "Receive" -ResultSize Unlimited | Where-Object {$_.sender -like "*@.sobaka.com"} | Format-Table -AutoSize

Импорт групп рассылки в Exchange из CSV с помощью Powershell

Задача - импортировать(создать) группы рассылки из файла в Exchange.

Работоспособно для Windows Server 2008 R2, PowerShell 5, Exchange 2010 SP3
Содержимое CSV-файла:
import-groups2

# Подключение в Exchange (если надо)
add-pssnapin microsoft.exchange.management.powershell.e2010 
# Импорт модуля (если надо)
import-module activedirectory 
$Groups = Import-CSV -Path "C:\scripts\groups.csv" -delimiter ";" -Encoding Default

Foreach ($Group in $Groups) {
new-DistributionGroup -Name $Group.Name -OrganizationalUnit $Group.OrganizationalUnit -SamAccountName $Group.sAMAccountName -Alias $Group.Alias
Set-DistributionGroup -BypassSecurityGroupManagerCheck -RequireSenderAuthenticationEnabled $false -Identity $Group.Identity
}