Добавление  полных прав группе "Администраторы домена" на базу ADMINS (не даёт прав на OWA):

 Get-MailboxDatabase -identity "ADMINS" | Add-ADPermission -User "domain\Domain admins" -AccessRights GenericAll

Создание политики, отключающей для учётной записи лимит на одновременное подключение других почтовых ящиков (по умолчанию 5):

 New-ThrottlingPolicy PolicyNAME -RCAMaxConcurrency $null -RCAPercentTimeInAD $null -RCAPercentTimeInCAS $null -RCAPercentTimeInMailboxRPC $null -EWSMaxConcurrency $null -EWSPercentTimeInAD $null -EWSPercentTimeInCAS $null -EWSPercentTimeInMailboxRPC $null -EWSMaxSubscriptions $null -EWSFastSearchTimeoutInSeconds $null -EWSFindCountLimit $null
Set-Mailbox "userNAME" -ThrottlingPolicy PolicyNAME

 Поиск входящих \ исходящих писем (в EMC только входящие):

Get-MessageTrackinglog  -recipient \ -sender "user@domain.ru" -start "mm/dd/yyyy" -end "mm/dd/yyyy"
Get-MessageTrace -SenderAddress \ RecipientAddress user@domain.ru -StartDate "06/12/2016 00:00:00" -EndDate "06/13/2016 23:59:59"

Во время работы были проблемы с MSExchangeMailSubmission. Почта просто останавливалась. Временно решалось перезагрузкой служб Transport и MailSubmission. Решил измением параметров:

 set-ReceiveConnector -Identity INTERNET -MaxInboundConnection Unlimited 
 set-ReceiveConnector -Identity INTERNET -MaxInboundConnectionPerSource Unlimited
 set-ReceiveConnector -Identity INTERNET -MaxInboundConnectionPercentagePerSource Unlimited

 Настройка автоматической работы почты, путём отправки и получения тестовых писем. Создаём следующий в планеровщике следующую задачу:

в поле Add arguments (optional):
-PowerShell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\V14\Bin\ExShell.psc1" -Command ". 'D:\script\mailflow.ps1'"

Сам скрипт mailflow.ps1Test-Mailflow -TargetEmailAddress your.name@yourdomain.tld

Указываем время в планировщике задач интервал, настраиваем в Outlook правило на перемещения писем от SystemMailbox{40583168-3147-4f7c-9f76-553a9d53f852}@yourdomain.tld (возможно у вас будет другое) в папку TEST. И просто мониторим её. Реализовал я это, когда были проблемы с MSExchangeMailSubmission. Если я не получал в назначенное время письмо - значит почта не работала.

 Не нашёл как созадать правило в PowerShell, но это правило в графике отключает спам для определённого почтового ящика:

Вывод списка групп и членов Exchange Online:

foreach ($group in Get-DistributionGroup) { get-distributiongroupmember $group.DisplayName | ft @{expression={$_.displayname};Label="$group"}}

"is not installed on this machine", "is not recognized as the name of a cmdlet":

 Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn

 Подключение к Exchange Online:

$Cred = get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange "https://outlook.office365.com/powershell-liveid/" -Credential $Cred -Authentication "Basic" -AllowRedirection
Import-PSSession $Session

 Назначение полных прав пользователю на другой почтовый ящик без автоподключения в Outlook (при ручном подключении в Outlook исходящая почта будет в папке "отправленые" другого почтового ящика):

Add-MailboxPermission -Identity user1 -User user2 -AccessRights FullAccess -InheritanceType All -AutoMapping $false

 Назначение лимита на объём почтового ящика (настройка на весь сервер и на отдельный почтовый ящик):

Set-TransportConfig –MaxSendSize 50MB –MaxReceiveSize 50MB
Set-MailboxDatabase "Mailbox Database01" -ProhibitSendQuota 50GB -ProhibitSendReceiveQuota 50GB -IssueWarningQuota 49GB -DeletedItemRetention 24855

 Разрешение "аминистратору" на импорт и экспорт почтового язика. Экпорт в PST файл:

New-ManagementRoleAssignment -Role "Mailbox Import Export" -User administrator
New-MailboxImportRequest -Mailbox User2 -FilePath \\SRV1\PST\user1.pst -AcceptLargeDataLoss -BadItemLimit unlimited -LargeItemLimit unlimited
New-ManagementRoleAssignment -Name “Import Export PST” -SecurityGroup “Organization Management” -Role “Mailbox Import Export”
New-MailboxImportRequest -Mailbox test -FilePath \\cas-1.corp.exonix.ru\PST\test.pst
Search-Mailbox -Identity "test" -SearchQuery "Subject:Info" -TargetMailbox "aleks" -TargetFolder "Searching" -LogLevel Full 

Вывод прав на папки почтового ящика:

ForEach($f in (Get-MailboxFolderStatistics user1 | Where { $_.FolderPath.Contains("/") -eq $True } ) )
{
$fname = "user1:" + $f.FolderPath.Replace("/","\"); get-MailboxFolderPermission $fname
Write-Host $fname
Start-Sleep -Milliseconds 1000
}

 Удаление прав со всех папок почтового ящика:

ForEach($f in (Get-MailboxFolderStatistics user1 | Where { $_.FolderPath.Contains("/") -eq $True } ) )
{
$fname = "user1:" + $f.FolderPath.Replace("/","\"); remove-MailboxFolderPermission $fname -User user2 -confirm:$false
Write-Host $fname
Start-Sleep -Milliseconds 1000
}

 Назначение прав на все папки почтового ящика:

ForEach($f in (Get-MailboxFolderStatistics user1 | Where { $_.FolderPath.Contains("/") -eq $True } ) )
{
$fname = "user1:" + $f.FolderPath.Replace("/","\"); Add-MailboxFolderPermission $fname -User user2 -AccessRights Reviewer
Write-Host $fname
Start-Sleep -Milliseconds 1000
}

 Офлайн адресная книга:

New-AddressList -name TEST -RecipientContainer 'exonix.ru/TEST' -IncludedRecipients 'AllRecipients'
Update-AddressList -Identity TEST
new-globalAddressList -Name 'TEST_GAL' -RecipientContainer 'exonix.ru/TEST' -IncludedRecipients 'AllRecipients'
Update-GlobalAddressList -Identity TEST_GAL
New-AddressBookPolicy -Name "TEST_ABP" -AddressLists "TEST" -GlobalAddressList "TEST_GAL" -OfflineAddressBook "Default Offline Address Book" -RoomList "All Rooms"
Set-Mailbox -Identity Test_User1 -AddressBookPolicy TEST_ABP
Get-Mailbox user1 | Search-Mailbox -SearchQuery "subject:subject" -DeleteContent -Confirm

 статистика по топ-отправителям и по темам (за день):

PS C:\> Get-MessageTrace -RecipientAddress user@domain.com -StartDate "11/14/2016 00:00:00" -EndDate "11/20/2016 23:59:59" | Group-Object {$s = $_.Subject -replace "\d","X"; if($s.Length -gt 33) {$s.Substring(0,32)} else {$s}} | Select Count,@{n="SenderAddress";e={$_.Group[0].SenderAddress}},@{n="Subject";e={$_.Name}}

 Вывод персональной информации пользователей:

get-mailbox | Get-Recipient | ft -Property DisplayName,PrimarySmtpAddress,Office,Company,Department,Title,Phone

 Вывод всех пользователей и их почтовые адреса, включая алиасы:

$FormatEnumerationLimit=-1
Get-Recipient -Filter *| ft -Property displayname,emailaddresses

Статистика по перенаправлении почты (правила, польовательские настройки), по правам на почтовые ящики:

get-Mailbox -Identity user@domain.com | fl -Property DisplayName,PrimarySmtpAddress, ForwardingAddress
Get-TransportRule | fl -Property Name, Description
Get-DistributionGroupMember -Identity team@domain.com | Get-Mailbox | Get-MailboxPermission -ResultSize Unlimited

Поиск писем:
в определённом почтовом ящике с определённой темой и датой:

Get-Mailbox user@domain | Search-Mailbox -SearchQuery ' (subject:subject) AND (Sent:"16/05/2016")' -TargetMailbox searchbox -TargetFolder searchfolder

по всем почтовым ящикам (включая общие почтовые ящики) по вложениям

foreach ($Mailbox in Get-Mailbox -ResultSize Unlimited) {Search-Mailbox -Identity $Mailbox.DistinguishedName -SearchQuery "attachment:attachment*" -TargetMailbox searchbox -TargetFolder searchfolder}

удаление в определённом почтовом ящике по определённому отправителю и только в удалённых элементах

Get-Mailbox user@domain | Search-Mailbox -SearchQuery "from:user@domain" -DeleteContent -Force-SearchDumpsterOnly

 Поиск пользовательских правил:

foreach ($Mailbox in Get-Mailbox -ResultSize Unlimited) {Get-InboxRule -Mailbox $Mailbox.PrimarySmtpAddress | fl -Property MailboxOwnerId,Name,Enabled,Description

 Члены ролей Office 365:

$cred = Get-Credential
Connect-MsolService -credential $cred
$Line = "-------------------------------"
$MembersText = "Members:"
foreach ($MsolRole in Get-MsolRole) {
$Members = Get-MsolRoleMember -RoleObjectId $MsolRole.ObjectId
$Line
$MsolRole.Name
$MembersText
$Members.DisplayName
}