Полезные командлеты Powershell для Exchange

Восстановление поврежденного ящика exchange
Код:
New-MailboxRepairRequest -Mailbox username -CorruptionType ProvisionedFolder, SearchFolder, AggregateCounts, Folderview
 
Перемещение почтового ящика
New-MoveRequest -Identity agruber@contoso.com -TargetDatabase "MBX 02" -ArchiveTargetDatabase "MBX 03" -BadItemLimit 10

Перемещение только основного почтового ящика пользователя.
New-MoveRequest -Identity agruber@contoso.com -PrimaryOnly-TargetDatabase "MBX 02" -BadItemLimit 10

Перемещение только архивного почтового ящика пользователя.
New-MoveRequest -Identity agruber@contoso.com -ArchiveOnly -ArchiveTargetDatabase "MBX 03" -BadItemLimit 10
 
Установка квот для всех почтовых ящиков в базе.
Set-MailboxDatabase -Identity MB-DB1 -IssueWarningQuota 4GB -ProhibitSendQuota 4500MB -ProhibitSendReceiveQuota 5GB
 
Командлеты для диагностики виртуальных директорий ну и вообще посмотреть как что настроено
Код:
Get-OabVirtualDirectory | fl server, Name, ExternalURL, InternalURL, *auth*
Get-WebServicesVirtualDirectory | fl server, Name,ExternalURL, InternalURL, *auth*
Get-EcpVirtualDirectory | fl server, Name, ExternalURL, InternalURL, *auth*
Get-ActiveSyncVirtualDirectory | fl server, Name, ExternalURL, InternalURL, *auth*
Get-OutlookAnywhere | fl server, Name, *hostname*, *auth*
Get-OwaVirtualDirectory | fl server, Name, ExternalURL, InternalURL, *auth*
Get-ClientAccessService | fl Name,OutlookAnywhereEnabled, AutodiscoverServiceInternalUri
Get-ExchangeCertificate | fl FriendlyName, Subject, CertificateDomains, Thumbprint, Services, Issuer, *not*
Get-MapiVirtualDirectory | fl server, Name,ExternalURL,InternalURL, *auth*
Get-ClientAccessArray | fl
Get-OutlookProvider
Get-ExchangeServer | fl *version*
Get-OrganizationConfig | fl *mapi*
Get-ServerComponentState -identity Servername
 
Показывает ноды кластера в DAG
Get-Cluster | Get-ClusterNode
 
Проверка подключения outlook
Test-OutlookConnectivity -RunFromServerId mail1 -ProbeIdentity OutlookMapiHttpSelfTestProbe
 
Отчет на предмет все ли живо в exchange
Get-ServerHealth mail2
Посмотреть health отчет exchange 2016 с фильтром по интересующему параметру
Get-ServerHealth mail2 | ?{$_.HealthSetName -eq "Outlook.Protocol"}
 
Посмотреть Offline Address Book
Get-OfflineAddressBook | fl Name,Server,PublicFolderDistributionEnabled,WebDistributionEnabled,VirtualDirectories
 
Поменять метод аутентификации на виртуальной директории
Get-MapiVirtualDirectory | Set-MapiVirtualDirectory -IISAuthenticationMethods Negotiate,NTLM,Oauth
 
Узнать GUID почтового ящика
get-mailbox |ft Name, Guid > c:\guid.txt

Узнать SID пользователя
whoami /user
или
wmic useraccount where name="USERNAME" get name,sid
 
Выключение доступа к Центру администрирования Exchange из Интернета с помощью командной консоли

В этом примере показано, как выключить доступ к Центру администрирования Exchange на сервере CAS01.
Set-ECPVirtualDirectory -Identity "CAS01\ecp (default web site)" -AdminEnabled $false
 
С хабра на тему кто удалил письмо в Exchange

Поиск в журналах событий с использованием PowerShell, приведем несколько примеров:

1. Команда позволяет проводить поиск попыток подключения от имени «Admin» и «Delegate» по всем журналам в интервале времени в ящике пользователя «Krishna.Kumar»
Search-MailboxAuditLog -Identity Krishna.Kumar -LogonTypes Admin,Delegate -StartDate 4/1/2014 -EndDate 4/30/2014 -ResultSize 4000

2. Команда позволяет проводить поиск операций «SendAS», выполненных от имени «Admin» и «Delegate» в ящиках пользователей «Krishna.Kumar» and «Rajesh.Kumar»
Search-MailboxAuditLog -Identity Krishna.kumar,rajesh.kumar -LogonTypes Admin,Delegate -ShowDetails -StartDate 4/1/2012 -EndDate 4/1/2014 | Where-Object {$_.Operation -eq “sendas”}

3. Команда позволяет проводить поиск операций «Hard Delete», выполненных от имени владельца в ящике пользователя «Krishna.Kumar»
Search-MailboxAuditLog -Identity Krishna.kumar -LogonTypes Owner -ShowDetails -StartDate 4/1/2014 -EndDate 3/1/2012 | Where-Object {$_.Operation -eq “HardDelete”}
 
только это аудит должен быть включен
 
Повторное заполнение базы Exchange (Reseed Database)

Код:
Update-MailboxDatabaseCopy "Mailbox Database1"
Update-MailboxDatabaseCopy "Mailbox Database1" -SourceServer MAIL3
Update-MailboxDatabaseCopy "Mailbox Database1" -DeleteExistingFiles

Если вы получаете сообщение об ошибке, что файлы журнала уже существуют в пути журнала транзакций для базы данных, вы можете использовать параметр -DeleteExistingFiles, чтобы указать серверу Exchange удалить эти файлы перед началом повторного заполнения.
 
Посмотреть объем полученной почты почты в ящике в интервале времени
Search-mailbox user_name -SearchQuery 'Received:01/01/2020..01/01/2021' -EstimateResultOnly

Вывод в таком виде, количество писем и объем
1628679722842.png
 
Перенос почтовых ящиков с одного Exchange на другой или даже с Exchange Online больше не является сложной задачей. Как мигрировать почтовые ящики ясно и так. Вот пара командлетов о том как проверить статус миграции почтового ящика. В этом примере я подключаюсь к Exchange Online с помощью следующей команды:
Код:
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session

После подключения к своей конечной точке я могу проверить статус пакета миграции с помощью следующей команды:
Get-MigrationUser -BatchId StagedBatch1 | Get-MigrationUserStatistics

Либо можно поэкспериментировать над командой
Get-MigrationUser -BatchId BATCH | where {$_.Status -ne 'Completed'} | Get-MigrationUserStatistics
 
Поиск писем на определенном сервере Exchange, отправленные в течение определенного периода времени, которые были отправлены определенному получателю:
Код:
Get-MessageTrackingLog -Start "02/26/2021 08:24:00" -End "02/28/2021 17:00:00" -Recipients $recipientSMTP -Server $ExchServer
 
Следующий командлет работает на сервере Exchange Server 2016 и в Exchange Online, его можно использовать для изменения параметров обработки календаря для ресурсного почтового ящика, включая помощника по календарю, помощника по резервированию ресурсов и конфигурацию календаря. Есть компания, у которой, скажем, 10 переговорных комнат. 9 из них можно бесплатно забронировать для всех сотрудников, но одна доступна только для определенной группы в компании, например, для отдела кадров.
Пример 1 - запретить всем пользователям, кроме HR, бронировать эту переговорную.
Set-CalendarProcessing "MeetingRoom1" -BookInPolicy "User1","User2","User3","User4"
Пример 2 - автоматизирует обработку календарных запросов к ресурсному почтовому ящику SBB23.
Код:
Set-CalendarProcessing -Identity "SBB23" -AutomateProcessing AutoAccept -DeleteComments $true -AddOrganizerToSubject $true -AllowConflicts $false
Пример 3 - С помощью командлета Set-CalendarProcessing мы также можем отключить автоматическую обработку. Вот пример служебного автомобиля с номерным знаком GR123321
Set-CalendarProcessing -Identity "GR123321" -AutomateProcessing None
 
Иногда бывает, что пользователи уезжают в отпуск и забывают установить Уведомление об отсутствии на работе.
Другой пример: пользователь какое-то время болеет, и ему также необходимо установить уведомление «Нет на работе».
Код:
Set-MailboxAutoReplyConfiguration -Identity "Desmond Miles" -AutoReplyState Enabled `
-InternalMessage "I'm currently on leave until 23th April. Please contact Ezio Auditore on x72023 for urgent matters." `
-ExternalMessage "I'm currently on leave. Please contact our Administration Department on +41 12 345 67 89 for further assistance."

Так же возможно запланировать период времени, с которого до момента, когда мы хотим активировать уведомление
Код:
Set-MailboxAutoReplyConfiguration -Identity "ALIAS" -AutoReplyState Scheduled –StartTime “02/28/2018 07:00:00” –EndTime 03/18/2018 17:00:00 `
-InternalMessage "I'm currently on leave until 23th April. Please contact Ezio Auditore on x72023 for urgent matters." `
-ExternalMessage "I'm currently on leave. Please contact our Administration Department on +41 12 345 67 89 for further assistance."
 
Назад
Верх Низ