Отслеживание сообщений в 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

Поиск по отправителю и получателю:

Get-MessageTrackingLog -Start "3/15/2017" -End "3/17/2017" -ResultSize Unlimited -Recipients "test1@domain.ru" -Sender "test2@domain12.ru" |  select-object timestamp, eventid, messageid, sender, recipients, messagesubject | Out-GridView

Поиск писем и экспорт в CSV-файл:

Get-MessageTrackingLog -Start "7/22/2017" -End "7/26/2017" -ResultSize Unlimited -Recipients "test@domain.ru" |  select-object timestamp,eventid,sender,recipients,messagesubject | Export-Csv -Path "C:\scripts\Exchange\test.csv" -Encoding Default -Delimiter ";"

Импорт групп рассылки в 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
}

Импорт пользователей в active directory из CSV. Создание ящика в Exchange

Задача - сделать в Active Directory импорт пользователей из csv-файла и создать им ящики в Exchange.
Работоспособно для Windows Server 2008 R2, PowerShell 5, Exchange 2010 SP3

Содержимое CSV-файла:
import-csv

# Подключение в Exchange (если надо)
add-pssnapin microsoft.exchange.management.powershell.e2010 
# Импорт модуля (если надо)
import-module activedirectory 

$Users = Import-CSV -Path "C:\scripts\import\users.csv" -delimiter ";" -Encoding Default

foreach ($User in $Users)  
{  
 $Name = $User.Name
 $GivenName = $User.GivenName
 $Surname = $User.Surname
 $Department = $User.Department
 $Title = $User.Title
 $Description = $User.Description
 $Password = $User.Password
 $DisplayName = $User.DisplayName
 $Path = $User.Path
 $Company = $User.Company
 $sAMAccountName = $User.sAMAccountName
 $userprincipalname = $User.userprincipalname
 $Identity = $User.Identity
 $Database = $User.Database
 $Alias = $User.Alias
 
# Добавляем пользователей
 New-ADuser -Name $Name -Surname $Surname -Department $Department -GivenName $GivenName -Title $Title -Description $Description -Company $Company -DisplayName $DisplayName -Userprincipalname $Userprincipalname -Path $Path -CannotChangePassword $false -PasswordNeverExpires $false -ChangePasswordAtLogon $false -PasswordNotRequired $true -Enabled $true -sAMAccountName $sAMAccountName -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -Force)
# Создаём ящик в Exchange
 Enable-Mailbox -identity $Identity -Alias $Alias –Database $Database
# Отключаем OWA и ActiveSync
 Set-CASMailbox -Identity $Identity -OwaEnabled $false -ActiveSyncEnabled $false 
} 

Настройка автоответа в Microsoft Exchange 2010 с помощью Powershell

Получить статус автоответа для пользователя:

Get-MailboxAutoReplyConfiguration vyurov

Установить автоответ для ящика vyrov с 25.06.2016 по 25.07.2016. С указанием сообщений для внешних отправителей и для внутренних:

Set-MailboxAutoReplyConfiguration -identity vyurov –AutoReplyState Scheduled –StartTime "6/25/2016" –EndTime "7/25/2016" –ExternalMessage "Сообщение для внешних отправителей" –InternalMessage "Сообщение для внутренних отправителей"

Если автоответ должен быть бессрочным (отключаться вручную), параметр –EndTime указывать не нужно.

Как отключить автоответ пользователя с помощью Powershell:

Set-MailboxAutoReplyConfiguration d.adrianovskiy –AutoReplyState Disabled –ExternalMessage $null –InternalMessage $null

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

Get-Mailbox | Get-MailboxAutoReplyConfiguration | Where-Object { $_.AutoReplyState –eq "scheduled" } | fl identity,MailboxOwnerId,AutoReplyState,StartTime,EndTime

Скрипт с комментариями для установки автоответа в Exchange 2010/2013:

#user samaccountname
$username = "username"

#Дата начала автоответа в формате м/д/гггг
$starttime = "7/17/2017 00:00:01"

#Дата конца автоответа в формате м/д/гггг
$endtime = "7/20/2017 23:59:59"

#Сообщение для внутренних пользователей
$internalmessage =  "blablabla"

#Сообщение для внешних пользователей
$externalmessage = "blablabla"

#Установка автоответа
Set-MailboxAutoReplyConfiguration -identity $username –AutoReplyState Scheduled –StartTime "$starttime" –EndTime "$endtime" –ExternalMessage "$externalmessage" –InternalMessage "$internalmessage"

#Проверка результата
Get-MailboxAutoReplyConfiguration -Identity $username