Мониторинг индексации exchange. скрипт для проверки работы поиска в outlook

Мониторинг индексации Exchange. Скрипт для проверки работы поиска в Outlook

Опубликовано: 25.06.2018

Тематические термины: Exchange, Powershell.

При нарушении состояния индекса в MS Exchange будут наблюдаться проблемы при поиске в Outlook — среди результатов будут отображаться письма до определенной даты. При возникновении проблемы, необходимо переиндексировать базу. Но получать информацию о проблеме лучше самостоятельно, а не от пользователей системы.

Описанный скрипт, позволит проверить корректность индекса и, в случае проблем, отправить письмо администратору.

Подготовка

Перед запуском скрипта открываем powershell и выполняем:

read-host -assecurestring | convertfrom-securestring | out-file C:Scriptspassword.txt

Система запросит ввести пароль — введите пароль администратора Exchange (пользователя, из под которого будем подключаться к почтовому серверу); после данный пароль будет сохранен в виде хэш-суммы в файл C:Scriptspassword.txt.

Пример скрипта

  1. $username = «dmoskadministrator»
  2. $password = cat C:Scriptspassword.txt | convertto-securestring
  3. $base_failed = ''
  4. $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password
  5. $session = New-PSSession -ConfigurationName Microsoft.

    Exchange -ConnectionUri http://mx.dmosk.ru/powershell -Credential $cred

  6. Import-PSSession $session
  7. function Send-Alert ($bodyMessage) {
  8.     $it = «Дмитрий Моск «
  9.     $from = «Служба проверки индексации почты «
  10.     $enc = New-Object System.Text.

    utf8encoding

  11.     Send-MailMessage -to $it -from $from -Subject «Проблема с индексом Exchange» -bodyAsHTML $bodyMessage -smtpServer mx.dmosk.ru -Encoding $enc
  12. }
  13. (Get-DatabaseAvailabilityGroup) | ForEach {
  14.     $_.

    Servers | ForEach {

  15.         Get-MailboxDatabaseCopyStatus -Server $_ | Select Name,ContentIndexState | ForEach-Object {
  16.             if ($_.ContentIndexState -ne 'Healthy') {
  17.                 $name = $_.Name
  18.                 $contentIndexState = $_.

    ContentIndexState

  19.                 $base_failed += «$name : $contentIndexState
    «
  20.             }
  21.         }
  22.     }
  23. }
  24. if ($base_failed.Count -gt 0) {
  25.     Send-Alert $base_failed
  26. }
1 Переменная, содержащая имя пользователя, под которым подключаемся к Exchange.
2 Пароль пользователя Exchange.
3 Определяем пустую переменную — в нее будем помещать базы с проблемами.
5 — 7 Подключаемся к консоли Exchange, используя логин и пароль, определенные на строках 1 и 2. mx.dmosk.ru — имя сервера Exchange.
9 — 14 Функция отправки сообщения.
10 Переменная с email адресом администратора, которому будут отправляться уведомления.
11 Адрес, от которого отправляются письма.
12 Кодировка сообщения.
13 Собственно, отправка письма функцией Send-MailMessage. В качестве текста сообщения берется переменная $bodyMessage, значение для которой передается функции.
16 — 26 Поиск всех баз данных и определение их состояния. Предусмотрено использование DAG-групп. Если последние не используются, скрипт можно немного сократить, оставив строки 18 — 24, а также заменив $_ в 18-й строке на имя сервера Exchange.
16 Получаем все группы DAG.
17 Получаем список всех серверов Exchange с DAG группами.
18 Запрашиваем статус всех баз, которые находятся на сервере $_.
19 Проверяем условие, если статус не в рабочем состоянии.
20 — 21 Определяем переменные и записываем в них значения имени базы и состояния.
22 Добавляем в переменную $base_failed строку с именем базы и ее состоянием.
28 — 30 Если переменная $base_failed не пустая, выполняем функцию Send-Alert, то есть, отправляем сообщение.

Был ли вам полезен этот скрипт?

Да            Нет

Источник: https://www.dmosk.ru/scripts.php?object=exchange-monitoring-index

FAQ по Microsoft Exchange Server

Иногда пользователи жалуются на то, что в полученных сообщениях появляются «кракозябры», некорректно отображаемые символы.

На самом деле Outlook показывает содержимое письма в кодировке KOI-8, как будто это кодировка Windows 1251.

Для устранения проблемы  можно  изменить кодировку в сообщении на KOI-8, но  к сожалению,  не все пользователи знают про эту возможность  и заваливают службу HelpDesk звонками. Причиной такого поведения Outlook является ошибка […]

Одним из важных этапов настройки Exchange Server является проверка работоспособности его подсистем — прием сообщений по SMTP, доступ к OWA, OA, ECP.

В корпоративной сети это делается с помощью тестовых командлетов PowerShell или программами мониторинга.  Для тестирования снаружи лучше всего использовать специальный сайт Микрософт https://www.testexchangeconnectivity.com/.

Он создан для тестирования работоспособности сервисов Exchange Server из Интернет […]

Активное использование PowerShell в Exchange Server 2010 вызывает необходимость отправки результатов выполнения скриптов по электронной почте. В PowerShell 1.

0 не было встроенной функции отправки сообщений и приходилось использовать самописные  функции, основанные на отправке с помощью  .NET.  Плохого в этом ничего нет, но необходимость в них отпала, т.к.

с  версии PowerShell 2.0 появился командлет   Send-MailMessage.  При […]

Exchange Server состоит из множества служб, работающих по определенным TCP портам.

Знание этих портов помогает при конфигурации файерволов, поиске причин загруженности WAN каналов, а также является простейшим средством диагностики.

 Список портов можно найти в документации по ссылкам ниже, но Michel de Rooij  сделал графическое представление портов и сервисов, что облегчает понимание.  (далее…)

OWA — это серверное web приложение для работы с электронной почтой через браузер с данными,  расположенными на сервере.  PST файлы — это данные, расположенные на локальных дисках, имеющие массу недостатков. Поэтому компания Микрософт рекомендует избавляться от PST файлов и их невозможно открыть через OWA. Но существуют сторонние утилиты, типа PSTWay for OWA, которые позволяют из […]

Современный мир уже невозможно представить без таких электронных устройств, как телефоны и коммуникаторы.

Чтение электронной почты, планирование своего времени и работа с задачами являются лишь некоторыми из многих задач, решаемых данными устройствами, но именно эти задачи являются архиважными для любой компании.

На рабочих местах они реализуются с помощью связки Outlook 2010+Exchange Server 2010, а вот при работе с мобильного […]

Иногда пользователи спрашивают о том, как установить в адресной книге Outlook отображение контактов вместо глобального адресного списка(GAL). Мне немного странно слышать такую просьбу, т.к.

в Outlook существует поиск по адресной книге и распознавание имен, когда значения подставляются автоматически. Я вообще не помню, когда запускал адресную книгу для выбора отправителя.

Установить отображение контактов вместо GAL в […]

Источник: http://www.exchangefaq.ru/page/4

Что делать, если не работает поиск в Outlook 2016

Сегодня мы рассмотрим достаточно массовую проблему – не удается провести поиск писем в популярном почтовом клиенте Outlook 2016, предлагаемым компанией Microsoft.

Как почтовый клиент Outlook используется достаточно давно, имеет множество функций настройки почтовых ящиков, календарей, работает с контактами и задачами и т. д.

Иногда, чтобы найти нужную информацию нам приходится перерыть огромное количество писем (даже рассортированных по папкам и помеченных различными категориями) прежде, чем извлечь на свет божий тот самый отчет, который нужно было отправить вчера – а если при этом поиск по какой-то причине не желает выдавать результат, то можно легко понять, насколько огромной будет потеря времени в данной ситуации. Таким образом, решения, приведенные в данной статье, помогут тем, кто столкнулся с неработающим поиском в Outlook.

Если рассмотреть проблему поверхностно, то может быть достаточно и обычной переустановки Outlook (или пакета Office целиком), однако не всегда есть ресурсы для использования этого решения – подключение к интернету, дистрибутив, время.

Наряду с переустановкой можно выполнить восстановление по сети, если под рукой нет дистрибутива, но есть подключение к интернету:

  • Необходимо открыть «Панель управления» (правой кнопкой мыши на Пуск – Панель управления, либо в поле поиска напечатать панель управления).
  • В панели управления необходимо выбрать «Программы и компоненты».
  • После чего выделить установленный Office и щелкнуть сверху «Изменить».
  • В предложенных вариантах восстановления необходимо выбрать «Восстановление по сети» и щелкнуть «Восстановить» — данный процесс может длиться вплоть до нескольких десятков минут.

Проблема может быть решена после выполнения переустановки или восстановления по сети Office (как Office 2016, так и Office 365).

Еще одним способом решения может быть обновление пакета Office. Выполнить обновление можно следующим образом:

  • Запускаем любое приложение из пакета Office (например, Excel) и создаем новый документ.
  • Щелкаем сверху на «Файл», затем снизу на «Учетная запись».
  • Чтобы выполнить обновление пакета Office щелкаем на «Параметры обновления» и «Обновить». Этот процесс также может занять несколько минут.

Если выполнить данные действия нет возможности, то тогда можно создать новую конфигурацию в Outlook и проверить работу поиска в ней, однако при добавлении конфигурации придется заново добавить все используемые почтовые ящики:

  • Вновь запускаем «Панель управления» и выбираем пункт «Mail».
  • Щелкаем «Показать» в разделе «Конфигурации».
  • Для добавления конфигурации щелкаем «Добавить».
  • Требуется указать имя новой конфигурации – в данном случае это Test. Щелкаем «ОК».
  • Чтобы по умолчанию запустилась новая созданная конфигурация необходимо снизу выбрать пункт «Использовать конфигурацию», выбрать Test и нажать «ОК».

После добавления конфигурации Test (имя можно указать любое) Вам будет предложено добавить почтовые ящики. Необходимо добавить хотя бы один и проверить работу поиска.

Также, проблема может заключаться в работе службы индексации операционной системы – в этом случае необходимо перестроить индекс для Outlook:

  • Необходимо открыть «Панель управления» и щелкнуть «Параметры индексирования».
  • Выбираем Outlook и щелкаем «Дополнительно».
  • Для начала перестройки индекса нужно щелкнуть «Перестроить».

Перестроение индекса может занять длительное время, здесь все будет зависеть от количества писем в ящике.

Таким образом, мы рассмотрели проблему поиска писем в Outlook и возможные пути ее решения.

В любом случае, если данные методы не помогают, то имеет смысл проверить работу операционной системы – на поиск в Outlook может повлиять также повреждение каких-либо системных служб и компонентов.

Если сама операционная система работает некорректно и в ней много ошибок, то имеет смысл провести ее восстановление.

Читайте также. Все по теме

Источник: https://WindowsTips.ru/chto-delat-esli-ne-rabotaet-poisk-v-outlook-2016

Ошибки поиска в OWA и Outlook после установки Exchange 2010 Service Pack 1

После установки Exchange 2010 Service Pack 1 вы можете обнаружить, что поиск в Outlook Web App (OWA) приводит к получению ошибки: “The action couldn’t be completed.  Try again later.

” Кроме того, клиенты Outlook работающие в онлайновом режиме (online mode) не могут больше выполнять поиск во вложениях или во вложенных письмах.

 

Во время проявления проблемы вы можете увидеть следующие сообщения в журнале приложений (application log):

Log Name: Application
Source: MSExchangeIS Mailbox Store
Event ID: 9877
Task Category: Content Indexing
Level: Error
Description:
Content Indexing function 'CISearch::EcGetRowsetAndAccessor' received an unusual and unexpected error code from MSSearch. Mailbox Database: Error Code: 0x80043629

Log Name: Application
Source: MSExchangeIS Mailbox Store
Event ID: 9842
Task Category: Content Indexing
Level: Error
Description:
Function CISearch::EcGetRowsetAndAccessor detected that content indexing was disabled for database '' because of error '0x80041820' from MSSearch.

Когда вы проверяете папку CatalogData в той же папке, где находится почтовая база, вы можете увидеть, что файлы индексации контента (файлы .CI) не растут. Если вы выполняете ResetSearchIndex.

ps1 над этим индексом, вы можете видеть, что общий размер папки CatalogData увеличивается только на несколько килобайт или мегабайт, либо что файлы.

CI вообще не создаются или создаются, но только размером только в несколько килобайт каждый.

В чем причина этой проблемы?

Эта проблема – обычно результат установки или обновления многоролевого сервера (сервер с установленными ролями MB, CAS, HT) до SP1 и последующим удалением ролей транспортного сервера-маршрутизатора (Hub Transport) и клиентского доступа (Client Access), в результате чего на сервере остается только роль сервера почтовых ящиков. 

В реестре существует ссылка для каждого языка,  HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlContentIndexLanguage. Эта ссылка (ActiveX CLSID используемого класса) позволяет выполнять выделение слов и морфологический анализ для соответствующего языка.

Во время удаления Exchange 2010 Service Pack 1 для роли Hub Transport программа установки удаляет эти ссылки в реестре, несмотря на то, что роль сервера почтовых ящиков все еще присутствует.  Удаление этих ссылок приводит к ошибкам  генерации индексных файлов.

Как исправить эту проблему?

Вам нужно выполнить скрипт на серверах почтовых ящиков, где возникла эта проблема, для того чтобы восстановить ссылки:

  1. Загрузите скрипт в Центре загрузок Repair-ExchangeSearchSymlinks.ps1
  2. Скопируйте скрипт Repair-ExchangeSearchSymlinks.ps1 в каталог Scripts на сервере почтовых ящиков (по умолчанию C:Program FilesMicrosoftExchange Serverv14Scripts).
  3. На сервере почтовых ящиков найдите ссылку на Exchange Management Shell и запусти его с повышенными правами: щелкните на ней правой кнопкой мышки и выберите “Run as Administrator”.
  4. В Exchange Management Shell перейдите в каталог Exchange Scripts.
  5. Затем выполните скрипт:
    .Repair-ExchangeSearchSymlinks.ps1
  6. Затем выполните следующий скрипт, указав имя почтовой базы (или баз), индекс которой выходите перестроить:
    .ResetSearchIndex.ps1 [-force] []…
  7. Вы получите сообщение Event ID 109 для каждой почтовой базы, когда процесс перестроения индекса начнется и сообщение Event ID 110 для каждой почтовой базы, когда процесс перестроения индекса завершится.
  8. После появления Event ID 110 для каждой почтовой базы проверьте, что поиск работает правильно в и в OWA, и в онлайновом режиме Outlook.

Боб Вонт

Перевод: Илья Сазонов, MVP

Источник: https://blogs.technet.microsoft.com/exchange_ru/2011/10/24/owa-outlook/

Диагностика проблем поиска Exchange

Применимо к: Exchange Server 2010 SP1

Последнее изменение раздела: 2011-03-19

Служба поиска Exchange индексирует почтовые ящики и поддерживаемые вложения в почтовых ящиках Exchange.

Благодаря увеличению объемов сообщений электронной почты, размеров почтовых ящиков и квот хранилища, а также подготовке личных архивных почтовых ящиков для пользователей и введению поиска в нескольких почтовых ящиках для выполнения поиска на обнаружение служба поиска Exchange является критическим компонентом серверов почтовых ящиков в организации Microsoft Exchange Server 2010. Неполадки со службой поиска Exchange могут повлиять на производительность работы пользователей и на функции поиска в нескольких почтовых ящиках. 

Дополнительные сведения о службе поиска Exchange см. в разделе Общие сведения о подсистеме поиска Exchange.

Необходимы сведения о задачах управления, связанных с управлением службой поиска Exchange? См. раздел Управление поиском Exchange.

В этом разделе на шаге 5 процедуры описан способ запуска командлета Test-ExchangeSearch для выполнения диагностики неполадок службы поиска Exchange.

Командлет Test-ExchangeSearch можно использовать для проверки функций службы поиска Exchange для сервера почтовых ящиков, базы данных почтовых ящиков или определенного почтового ящика.

Этот командлет доставляет тестовое сообщение на определенный почтовый ящик (или на системный почтовый ящик базы данных, если почтовый ящик не определен), а затем выполняет поиск, чтобы определить, необходимо ли индексировать сообщение (включая время, затраченное на индексацию).

В обычных условиях служба поиска Exchange индексирует сообщение в течение 10 секунд с момента создания или отправки сообщения в почтовый ящик. Тестовое сообщение автоматически удаляется после проверки.

Exchange 2010 включает в себя следующие улучшения для командлета Test-ExchangeSearch.

  • В стандартный вывод добавлен параметр Mailbox.
  • Если имя сервера указано, командлет одновременно проверяет все базы данных почтовых ящиков на сервере почтовых ящиков. После запуска команды на сервере почтовых ящиков, не содержащем активную копию базы данных, для баз данных, которые реплицируются на другие серверы почтовых ящиков в группе доступности базы данных, проверка выполняется автоматически на сервере, который содержит активную копию базы данных.
  • При использовании командлета с параметром MonitoringContext предоставляются дополнительные данные, которые можно использовать при отслеживании программного обеспечения, например Microsoft System Center Operations Manager 2007.
  • При использовании командлета с параметром Verbose возвращаются дополнительные результаты и состояние для каждого шага, а также дополнительные диагностические сведения для помощи в устранении неполадок, связанных с поиском.

Дополнительные сведения о синтаксисе и параметрах см. в разделе Test-ExchangeSearch.

Можно использовать командлет Get-FailedContentIndexDocuments для получения списка элементов почтового ящика, не поддерживающих поиск, которые невозможно индексировать с помощью службы поиска Exchange. Этот командлет можно запустить на сервере почтовых ящиков, в базе данных почтовых ящиков или в определенном почтовом ящике.

Командлет возвращает сведения о каждом элементе, поиск которого не удалось выполнить. Существует несколько причин, по которым невозможно выполнить поиск элемента почтового ящика. Например, если сообщение электронной почты содержит тип файла вложения, для которого не установлен фильтр поиска.

Если фильтр поиска доступен для этого типа файла, можно установить его на серверы Exchange.

Важно!
Фильтры поиска, предоставленные корпорацией Microsoft, проверяются и поддерживаются корпорацией Microsoft. Перед установкой фильтров поиска на серверы Exchange в производственной среде рекомендуется проверить любые фильтры поиска сторонних производителей в тестовой среде.
Примечание.
Сообщения, содержащие файл вложения, формат которого включен в список надежных отправителей, не возвращаются в список элементов, не поддерживающих поиск. Дополнительные сведения см. в подразделе «Служба поиска Exchange и вложения» в разделе Общие сведения о подсистеме поиска Exchange.

Дополнительные сведения о синтаксисе и параметрах см. в разделе Get-FailedContentIndexDocuments.

Запись «Служба поиска Exchange» в разделе Разрешения для почтового ящика.

  1. Проверка состояния службы   Запущена ли служба индексатора поиска Microsoft Exchange (MSExchangeSearch) на сервере почтовых ящиков? Если да, перейдите к шагу 2. Если нет, используйте оснастку «Службы» консоли управления (MMC), чтобы убедиться, что служба MSExchangeSearch запущена. Для этого выполните следующие действия.
    1. Нажмите кнопку Пуск, выберите пункт Администрирование и выберите Службы.
    2. Убедитесь, что в окне Службы для пункта Состояние для службы Индексатор поиска Microsoft Exchange указано значение Запущено.
  2. Проверка конфигурации базы данных почтовых ящиков   Присвоено ли параметру IndexEnabled значение True для базы данных почтовых ящиков пользователя? Если да, перейдите к шагу 3. Если нет, выполните следующую команду в командной консоли Exchange, чтобы убедиться, что для отметки IndexEnabled установлено значение True.
    Скопировать код
    Get-MailboxDatabase | Format-Table Name,IndexEnabled

    Подробные сведения о синтаксисе и параметрах см. в разделе Get-MailboxDatabase.

  3. Проверка состояния сканирования базы данных почтовых ящиков   Отсканирована ли база данных Exchange? Если да, перейдите к шагу 4. Если нет, используйте монитор надежности и производительности для проверки счетчика Состояние режима полного сканирования объекта производительности Индексы поиска MSExchange. Выполните следующие шаги.
    1. Откройте монитор надежности и производительности (perfmon.exe).
    2. В дереве консоли в разделе Средства наблюдения выберите Системный монитор.
    3. На панели системного монитора нажмите кнопку Добавить (зеленый знак «плюс»).
    4. В окне Добавить счетчики в списке Выбрать счетчики с компьютера выберите сервер, на котором размещена база данных почтовых ящиков, которую необходимо отслеживать.
    5. В непомеченном поле под списком Выбрать счетчики с компьютера выберите объект производительности Индексы поиска MSExchange.
    6. В поле Экземпляры выбранного объекта выберите экземпляр базы данных почтовых ящиков пользователя.
    7. Нажмите кнопку Добавить, а затем кнопкуОК.

    На панели системного монитора в столбце Объект отображается объект производительности Индексы поиска MSExchange, а его различные счетчики отображаются в столбце Счетчик. Просмотрите счетчик Состояние режима полного сканирования. Если база данных все еще сканируется, ее значение равно 1. Если сканирование завершено, значение равно . Чтобы просмотреть другие счетчики, относящиеся к поиску, используйте предыдущие шаги с «а» до «ж» для добавления следующих объектов производительности.

    • Индексатор поиска MSExchange
    • MSFTESQL-Exchange:Catalogs
    • MSFTESQL-Exchange:FD
    • MSFTESQL-Exchange:Indexer
    • MSFTESQL-Exchange:Service

    Дополнительные сведения об использовании системного монитора см. в разделе Пошаговое руководство по отслеживанию надежности и производительности для Windows Server 2008

  4. Проверка работоспособности индексирования копии базы данных   Работоспособен ли индекс содержимого? Используйте командлет Get-MailboxDatabaseCopyStatus для проверки работоспособности индексирования содержимого для копии базы данных.
    Скопировать код
    Get-MailboxDatabaseCopyStatus | Format-Table Identity,ActiveDatabaseCopy,ContentIndexState -Auto

    Дополнительные сведения о синтаксисе и параметрах см. в разделе Get-MailboxDatabaseCopyStatus.

  5. Запуск командлета Test-ExchangeSearch   Если база данных почтовых ящиков уже отсканирована, можно запустить командлет Test-ExchangeSearch для базы данных почтовых ящиков или для определенного почтового ящика.
    Скопировать код
    Test-ExchangeSearch -Identity AlanBrewer@contoso.com

    Дополнительные сведения о синтаксисе и параметрах см. в разделе Test-ExchangeSearch.

  6. Проверка журнала событий приложений   Проверка журнала событий приложений на наличие сообщений об ошибках, связанных с поиском, с помощью средства просмотра событий или командной консоли Exchange. Проверьте события Source: MSExchangeSearch Indexer и msftesql-Exchange. Дополнительные сведения см. по ссылке, приведенной в записи журнала событий.
  7. Перезапуск службы индексатора поиска Microsoft Exchange   Используйте оснастку «Службы» консоли управления (MMC) или командную консоль Exchange, чтобы остановить и перезапустить службу индексатора поиска Microsoft Exchange (MSExchangeSearch).
    1. Нажмите кнопку Пуск, выберите пункт Администрирование и выберите Службы.
    2. В области Службы щелкните правой кнопкой мыши службу Индексатор поиска Microsoft Exchange и нажмите кнопку Остановить. После остановки службы повторно щелкните службу правой кнопкой мыши и выберите команду Запустить.
  8. Повторное заполнение каталога поиска   В некоторых случаях, например при повреждении каталога поиска, может потребоваться повторно заполнить каталог. При необходимости повторного заполнения каталога поиска служба поиска Exchange уведомляет пользователя с помощью ввода записей в журнал событий приложений. Дополнительные сведения о повторном заполнении каталога поиска см. в разделе Повторное заполнение каталога поиска.

Источник: http://unifiedpeople.ru/exch2010help.ru/html/8cfa26f4-ccf0-42dd-8570-67018188b4e8.htm

Exchange

 Y.

GoncharovКатегория: Exchange 27 Август 2012 01 Июль 2016 21241

Один из примеров применения — внутрь периметра «прошел» нежелательный контент, не на один и не на два ящика, а к примеру ящиков 100 — 200 в ручную чистить не резонно, надеяться на ответственность и добросовестность пользователей не всегда можно, а данный контент несет в себе реальную угрозу к примеру в виде ссылок по нажатию которых может произойти загрузка нежелательного контента, да много еще чего может быть, а контент нужно удалить и причем в кратчайшие сроки. В данном случае на ум приходит пакетная обработка ящиков на наличие данного контента и если данный контент в ящиках присуствует, то его удаление, ниже приведу несколько примеров позволяющих сделать это при помощи Exchange Management Shell.

Данные примеры можно комбинировать и на 100% они не выражают некотрых целей но как базовая пища для размышлений вполне подходят. В качестве инструмента я использую команду search-mailbox, для массового обхода ящиков используется get-mailbox.

Итак пример поиска по теме сообщения с копированием найденных элементов в другой ящик:

Search-Mailbox -Identity «User.Name» -SearchQuery «Subject:'тема'» -TargetMailbox «MailboxAdmin» -TargetFolder «SearchResult» -LogLevel Full

Поиск по теме и телу сообщения:

Search-Mailbox -Identity «User.Name» -SearchQuery 'Subject:»тема» and Body:»тело»' -TargetMailbox «MailboxAdmin» -TargetFolder «SearchResult» -LogLevel Full

Поиск по дате отправке:

search-mailbox –Identity «User.Name» -SearchQuery '»subject:тест» Sent:08/08/2012' -TargetMailbox «MailboxAdmin» -TargetFolder «SearchResult»

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

Search-mailbox –Identity «User.Name» -SearchQuery «received:=06/06/2012 and sent:=07/07/2012» -TargetMailbox «MailboxAdmin» -TargetFolder «SearchResult» -LogLevel Full

Для поиска по всем ящикам, можно использовать поиск без параметра -Identity, используя — get-mailbox -resultsize unlimited |:

get-mailbox -resultsize unlimited | Search-Mailbox -SearchQuery 'SenderAddress:»senderAddress»' -TargetMailbox «mailboxName» -TargetFolder «09.04.2014-BAN» -LogLevel Full

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

get-mailbox -resultsize unlimited | Search-mailbox -SearchQuery 'Received:(01/01/2015..12/12/2015) and SenderAddress:EMAIL' -TargetMailbox «MailboxAdmin» -TargetFolder «Search-2015» -LogLevel Full

При необходимости найденный контент можно удалять используя параметр -DeleteContent, автоматическое подтверждение параметром -confirm: $false.

Источник: https://sys-adm.in/mic-services/exchange/324-exchange-2010-search-mailbox.html

Работа с журналом аудита почтового ящика (Mailbox Audit Logging) в Exchange 2013

Во многих организациях администраторы Exchange Server сталкиваются с ситуациями, когда необходимо определить кто и что сделал с элементом в почтовом ящике. Например кто из пользователей общего почтового ящика удалил письмо.

Exchange 2013 позволяет логировать подобные действия.
Журнал аудита включается на уровне почтового ящика. Записи журнала хранятся во вложенной папке Audits папки Recoverable Items в отслеживаемом почтовом ящике.

Папка скрыта от пользователя.

Существует три уровня аудита почтовых ящиков:

  1. AuditOwner – записи о действиях владельца ящика.
  2. AuditDelegate – записи о действиях делегатов (тех кому предоставлен доступ к п/я). Включает следующие типы операций: Update, SoftDelete, HardDelete, SendAs, Create.
  3. AuditAdmin – записи о действиях администраторов. Включает следующие типы операций: Update, Move, MoveToDeletedItems, SoftDelete, HardDelete, FolderBind, SendAs, SendOnBehalf, Create. Этот уровень отображает не такие действия, как подключения администратора к п/я, а чисто административные действия, например, импорт/экспорт из/в PST файл.

Подробные сведения о возможностях аудита см. в официальной документации: https://docs.microsoft.com/ru-ru/exchange/policy-and-compliance/mailbox-audit-logging/mailbox-audit-logging

Настройки журнала аудита п/я по умолчанию для Exchange Server 2013:

  • Журнал аудита почтового ящика отключен.
  • Записи журнала аудита хранятся в почтовом ящике 90 дней.
  • Для владельца аудит не включен:

[PS] C:Windowssystem32>Get-Mailbox pavel.antipov | fl *audit* AuditEnabled : False AuditLogAgeLimit : 90.00:00:00 AuditAdmin : {Update, Move, MoveToDeletedItems, SoftDelete, HardDelete, FolderBind, SendAs, SendOnBehalf, Create} AuditDelegate : {Update, SoftDelete, HardDelete, SendAs, Create} AuditOwner : {}

Аудит действий владельца может сгенерировать большое количество записей в журнале, поэтому по умолчанию отключен. Здесь также показаны различные действия, проверяемые относительно трех уровней доступа, которые можно настраивать.

Включение журнала аудита почтовых ящиков

С помощью командлета Set-Mailbox можно включить или отключить ведение журнала аудита почтовых ящиков.

Set-Mailbox pavel.antipov -AuditEnabled $true

Типичные кандидаты на включение аудита — это общие почтовые ящики, когда требуется разрешить споры о том кто и что удалил, переместил и т.п.; почтовые ящики руководителей с чувствительной информацией и др.
Также можно включить аудит на всех п/я в организации, если это необходимо:

Get-Mailbox -ResultSize Unlimited | Set-Mailbox -AuditEnabled:$true

Аудит для владельца п/я можно включить следующим образом:

Set-Mailbox -Identity «pavel.antipov» -AuditOwner Update,SoftDelete,HardDelete,Create,Move,MoveToDeletedItems -AuditEnabled $true

В таблице представлены доступные для аудита действия

ДействиеОписаниеАдминистраторДелегатВладелец
Copy Сообщение скопировано в другую папку. Да Нет Нет
Create В папке «Календарь», «Контакты», «Заметки» или «Задачи» почтового ящика создан элемент, например новое приглашение на собрание. Создание сообщений и папок при этом не регистрируется. Да1 Да1 Да
FolderBind Доступ к папке почтового ящика. Да1 Да2 Нет
HardDelete Элемент удален из папки «Recoverable Items» без возможности восстановления. Да1 Да1 Да
MailboxLogin Пользователь выполнил вход в свой почтовый ящик. Нет Нет Да3
MessageBind Сообщение открыто или просматривается в области просмотра. Да Нет Нет
Move Сообщение перемещено в другую папку. Да1 Да Да
MoveToDeletedItems Сообщение перемещено в папку «Удаленные». Да1 Да Да
SendAs Сообщение отправлено с использованием разрешений «Отправить как». Да1 Да1 Нет
SendOnBehalf Сообщение отправлено с использованием разрешений «Отправить от имени». Да1 Да Нет
SoftDelete Сообщение удалено из папки «Удаленные». Да1 Да1 Да
Update Свойства элемента обновлены. Да1 Да1 Да

1 Подлежат аудиту по умолчанию, если аудит включен для почтового ящика.

2 Записи доступа делегатов к папке консолидируются — генерируется одна запись для каждой папки в 24 часа.

3 Аудит входов владельца работает только для POP3, IMAP4 или OAuth. Он не работает при аутентификации NTLM или Kerberos.

Для автоматического включения ведения журнала аудита на всех вновь создаваемых п/я необходимо использовать Scripting Agent.

Сколько места требуется для хранения журналов

Это зависит от того, какие действия записываются в журнал и какое количество пользователей работают с ящиком. Ориентироваться можно на показания около 1 — 2 % от размера ящика. Но это, конечно, слишком умозрительная оценка. Для получения точной информации нужно поэкспериментировать. Включить аудит на интересующих ящиках и проверить как растёт журнал.

Для оценки размера папки Audits конкретного п/я можно запустить команду:

Источник: https://itblog.ru.net/ex/mailbox-audit-logging-exchange-2013/

Исправление базы данных почтовых ящиков в Exchange

В прошлой статье мы обсудили вопрос мягкого восстановления базы данных при помощи команды Esutil /R. В подавляющем большинстве случаев эта команда отрабатывает успешно и базу удается смонтировать на сервер. Но бывают и такие ситуации, когда база сильно повреждена и мягко восстановить её не получается, в таких случаях необходимо попытаться вытащить из базы как можно больше информации.

Исправление

Для исправления базы данных придется использовать команду ESEUTIL /P. Стоит несколько раз подумать, прежде чем пользоваться функцией Repair, т.к.

данная операция в ЛЮБОМ случае приведет к потере данных, и сколько именно данных будет потеряно спрогнозировать не реально, можно только с уверенностью сказать, что информация, находящаяся в лог-файлах будет на 100% потеряна.

Все дело в том, что база данных почтовых ящиков не является реляционной, а состоит из множества деревьев с указателями на страницы с данными. Так вот, ESEUTIL /P будет проверять все эти указатели и при обнаружении несоответствий, просто удалит указатель, в независимости от того, на какие данные он ссылается.

Процесс исправления запускается не по отношению к лог-файлам, как было с восстановлением, а по отношению к файлу самой базы данных.

eseutil /P MDB2.edb

После запуска на экран выводится предупреждение, которое позволяет одуматься и отказаться от этого метода восстановления базы.

Рис.1: Предупреждение перед операцией Repair.

Если все же вы твердо решили продолжать, то нужно нажать ОК и утилита ESEUTIL сделает все сама.

Рис.2: Исправление базы при помощи команды ESEUTIL /P.

После операции Repair может быть заметно снижена производительность базы данных, в связи с этим рекомендуется делать автономную дефрагментацию базы при помощи команды ESEUTIL /D, в результате выполнения команды будет создана абсолютно новая база данных, но тут нужно помнить, что для дефрагментации базы у вас должно быть свободного места больше на 110%, чем занимает исходная база.

Проверка логической целостности

После дефрагментации нужно будет проверить логическую целостность базы данных. Ранее, для этого используется утилита ISINTEG. На серверах Exchange 2007 и старше можно было выполнить команду:

isinteg -s имя_сервера -fix -test alltests

тем самым инициировав процесс проверки базы данных.

Рис.3: Проверка логической целостности базы при помощи ISINTEG.

Описание программы ISINTEG.

Неудобство использования ISINTEG заключается в том, что во время её работы база данных почтовых ящиков должна находиться в отключенном состоянии, а это означает достаточно длительный простой в случае большого размера базы.

Exchange 2010

Плюсом к этому, с приходом Exchange 2010 ISINTEG перестала понимать все функции новой базы данных. Но это и нормально, ведь данное средство не изменялось с 2000-го года!

К счастью, сервер Exchange 2010 и не нуждается в отдельном средстве проверки базы, т.к. по умолчанию, для каждой базы на сервере ежедневно по расписанию производится фоновое обслуживание, которое автоматически находит ошибки и при этом не требует отключения базы.

Рис.4: Фоновое обслуживание базы данных.

Exchange 2010 SP1

С входом Exchange 2010 SP1, появилась замена средства ISINTEG в виде новых командлетов:

· New-MailboxRepairRequest – тестирование и исправление почтовых ящиков;

· New-PublicFolderDatabaseRepairRequest – тестирование и исправление общих папок.

Эти командлеты позволяют выполнять тестирование и исправление как целых баз данных, так и отдельных почтовых ящиков.

При этом может быть запущено асинхронное сканирование сразу нескольких ящиков, которые во время проверки будут недоступны пользователю, зато все остальные ящики в базе будут прекрасно работать.

Правда, если вы запускаете проверку для всей базы сразу, то все почтовые ящики в базе будут отключены.

Синтаксис использования командлетов следующий:

new-MailboxRepairRequest [-Mailbox | -Database ] -CorruptionType [-DetectOnly] [-DomainController ]

Здесь

· Mailbox илиDatabase – это соответственно почтовый ящик или база данных;

· CorruptionType – вид проверки, которую вы желаете запустить:

· DetectOnly – используется, если вы хотите лишь обнаружить ошибки, но не исправлять их;

· DomainController – определяет контроллер домена для обновления данных.

Для того, чтобы запустить сразу все виды проверки, то необходимо их перечислить через запятую:

New-MailboxRepairRequest -Mailbox -CorruptionType SearchFolder,AggregateCounts,ProvisionedFolder,FolderView

Если нужен только один вид проверки для базы данных, то команда будет выглядеть следующим образом:

New-MailboxRepairRequest –Database MDB2 –CorruptionType AggregateCounts

Рис.5: Проверка всей базы.

В результате команда будет выполняться в фоновом режиме, а вам будет доступен её RequestID. Также в журнале событий Windows вы найдете событие под номером EventID = 10059, которое будет означать запуск сканирования

Рис.6: Запуск сканирования базы данных в журнале событий Windows.

И событие с EventID = 10048, которое будет означать успешное завершение операции.

Рис.7: Завершение операции сканирования базы данных в журнале событий Windows.

Заключение

В заключение хочется ещё раз напомнить, что задумываться о резервном копировании данных нужно задолго до того, как вам понадобится их восстанавливать, так что этот процесс должен быть заранее продуман и отработан.

Источник: http://www.alexxhost.ru/2010/10/exchange.html

PowerShell Как проверить статус баз данных Exchange

Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает об использовании Windows PowerShell для упрощения проверки статуса баз данных Exchange.

Q: У меня есть довольно большое число серверов Exchange, и когда я делаю восстановление баз данных, зачастую я не могу подключить базу, потому что она находится в состоянии «Dirty». Могу ли я использовать Windows PowerShell для исправления и подключения баз данных?

A: Microsoft Scripting Guy, Ed Wilson на связи. К сожалению, нет командлетов для получения состояния баз данных Exchange. Для этого вам нужно использовать Eseutil. Microsoft PFE Mike Pfeiffer написал пост о переводе базы данных Exchange в состояние «clean shutdown» при помощи eseutil.

Что касается Exchange и Windows PowerShell, то нельзя сказать, что вам совсем не повезло только потому, что вам придется использовать Eseutil. Это потому, что Windows PowerShell неплохо работает с утилитами командной строки. Microsoft Windows PowerShell MVP Sean Kearney написал целую серию статей, в которых он рассказывает о работе с утилитами командной строки из Windows PowerShell.

Одна из вещей, которая мне не нравится, это то, что при работе с Eseutil вам нужно указывать путь к базе данных, с которой вы собираетесь работать.

Это потому, что обычно пути представляют из себя довольно длинные строки, содержащие GUID и другие непростые вещи, которые значительно снижают шансы на их правильный ввод.

К счастью, эту проблему можно довольно просто решить с помощью PowerShell. Следующая команда возвращает путь к базе данных Exchange.

Get-MailboxDatabase -Status | select edbfilepath

Команда и ее вывод приведены на следующем рисунке.

Чаще всего, когда вам приходится работать с Eseutil, это происходит потому, что база данных Exchange не монтируется.

Таким образом, если я собираюсь запустить Eseutil для проверки статуса базы, она должна находиться в состоянии «offline». Это достаточно просто сделать из PowerShell.

Для этого нужно получить все базы данных Exchangeс помощью командлета Get-MailboxDatabase и передать результаты командлету Dismount-Database.

Get-MailboxDatabase | Dismount-Database –confirm:$false

Запуск вышеприведенной команды отключит все базы данных Exchange. При этом запрос подтверждения выведен не будет – для этого указан параметр -confirm:$false.

Если я хочу подключить все базы данных Exchange, я передам результаты командлету Mount-Database.

Get-MailboxDatabase -Status | Mount-Database

Для определения состояния баз данных Exchange мне нужно запустить команду eseutil с параметром/mh. Также нужно указать полный путь к базе данных Exchange. Тут нам опять очень пригодится PowerShell.

Мы уже получали путь к базе через PowerShell. Так же я знаю, что он может выполнять повторяющиеся операции. Символ «%» в нижеприведенной команде – это алиас для командлетаForeach-Object.

При помощи этой команды я запущу eseutil для каждой их баз данных Exchange.

Get-MailboxDatabase -Status | % { eseutil /mh $_.edbfilepath }

Команда выводит достаточно много информации. Меня же интересует значение поля «State».

Если мне не хочется просматривать весь вывод, я могу отфильтровать результаты с помощью командлета Select-String. Я ищу строку, содержащую слово «State».

[PS] C:>Get-MailboxDatabase -Status | % { eseutil /mh $_.edbfilepath } | Select-String -Pattern «State:»

            State: Clean Shutdown

            State: Clean Shutdown

[PS] C:>

Итак, я знаю, что обе мои базы в состоянии «Clean Shutdown» и я смогу их вернуть в состояние «online». Для этого я воспользуюсь следующей командой.

Get-MailboxDatabase –Status | Mount-Database

Так как предыдущая команда не выводит никакой информации, я хочу убедиться, чтоб базы почтовых ящиков действительно подключены. Для этого я использую командлет Get-MailboxDatabase и выберу свойства name и mounted.

[PS] C:>Get-MailboxDatabase -Status  | select name, mounted

Name                                                                         Mounted

—-                                                                                  ——-

Mailbox Database 1301642447                               True

Mailbox2                                                                        True

[PS] C:>

Итак, это все, что касается Windows PowerShell и Eseutil.

Источник: http://www.bulygin.su/2016/02/powershell-exchange.html

Get-MessageTrackingLog — Отслеживание сообщений в Exchange 2013

www.microsoft.com

Помимо непосредственного анализа транспортных логов, отслеживание сообщений в Exchange 2013 очень легко проводить с помощью инструмента Message Tracking Logs.

В этой статье я постараюсь коротко рассказать о некоторых возможностях командлета Get-MessageTrackingLog 1, созданного специально для обработки журналов отслеживания сообщений.

Найти больше информации по настройке и администрированию Exchange 2013 на моем блоге вы сможете в основной статье тематики — Exchange 2013 — Установка, настройка, администрирование.

Отслеживание сообщений в Exchange 2013

Итак, командлет можно выполнять без дополнительных параметров:

Данные будут взяты с сервера, на котором выполняется команда. По умолчанию будут выведены все события движения сообщений (но не более 1000 — ограничение командлета) за последние 30 дней.

Вывод не очень удобный и это ещё мягко говоря:

Снять установленное ограничение в 1000 строк можно ключом -ResultSize, выставив значение Unlimited (будьте аккуратны, это может сильно нагрузить сервер).

 Если все же есть стойкое желание продолжать просматривать огромное множество сообщений, вы можете немного упростить себе жизнь, скормив вывод командлету Out-Host 2 (сокращенно oh), который выводит результат не сплошным потоком, а постранично (в зависимости от размера консоли):

Get-MessageTrackingLog | Out-Host -Paging

Ключ -Paging как раз отвечает за постраничный вывод данных.

Уже удобнее, но данные все равно выглядят абсолютно неинформативно.

На самом деле в журналах отслеживания сообщений хранится достаточно много информации и некоторая её часть может быть чрезвычайно полезна при анализе работы сервера, анализе движения сообщений и многих других задач.

Увидеть сами лог-файлы вы можете в каталоге %ExchangeInstallPath%TransportRolesLogsMessageTracking.

Надо признать факт ,что ни один нормальный человек не будет анализировать эти логи вручную и сейчас вы поймете почему:

Это наглядный пример представления информации в журнале отслеживания сообщений. Непонятно абсолютно ничего.

Более того, не получится даже нормально соотнести названия столбцов (на рисунке выделено синим) с соответствующими им значениями в каждой строке.

Вообще говоря, можно открыть в Excel как формат CSV 3, поменять разделители, изменить представление на табличное, отсортировать по колонкам, а потом понять, что нужных вам данных тут нет и их надо искать в другом файле…

В принципе можно смело закрывать документ и идти снова в консоль.

Если вы хотите вывести значения только определенных столбцов, то вы столкнетесь с трудностями.

Дело в том, что имена столбцов 4 в файле и имена этих же столбцов в Powershell отличаются! Разработчики в Microsoft не ищут легких путей, надо отдать им должное.

Как же тогда нам узнать какие вообще поля можно вытащить и какие имена они будут иметь? Ответ прост — нам как всегда поможет командлет Format-List 5 (сокращенно fl). Напомню — он выводит свойства каждого объекта в отдельной строке.

А теперь представьте — нужно вывести каждое свойство каждого объекта в новой строке и таких объектов будет 1000 штук. Вариант не очень удобный.

В принципе можно задать более жесткие условия отбора для Get-MessageTrackingLog, но, вероятнее всего, он все равно отобразит несколько объектов. Придется обратиться к командлету Select-Object 6 (сокращенно select).

Грубо говоря, он позволяет выполнять сравнимые с sql-оператором Select задачи. Нам этот командлет нужен, чтобы просто вывести любое первое сообщение. Команда будет выглядеть следующим образом:

Get-MessageTrackingLog | Select-Object -First 1 | Format-List

На рисунке отмечены имена свойств каждого объекта:

Ну а теперь можно свободно оперировать полученными данными и выводить только то, что нам нужно.

Например я хочу посмотреть через какие соединители проходит сообщение (сузим круг поиска, указав тему письма), когда я отправляю его изнутри организации внутреннему же получателю. Для этого воспользуемся свойством ConnectorID.

Также не помешает вывести результат в читаемом формате и тут поможет командлет Format-Table 7 8 (сокращенно ft). Выровняем ширину столбцов ключом —AutoSize:

Get-MessageTrackingLog -MessageSubject «test_153504072016» | Format-Table Timestamp,ConnectorID,EventID,Source -AutoSize

А вот и вывод команды:

Все просто и понятно и видны даже названия соединителей, в том числе и системных.

Ну и напоследок попробуем обработать вывод Get-MessageTrackingLog с помощью очень интересного командлета Group-Object 9 (сокращенно group).

Он позволяет сгруппировать объекты по какому-либо свойству и подсчитать их количество.

Надо отметить, что командлет обычно используется в последнюю очередь (или одним из последних), поскольку он создает в конвейере новые объекты и далее уже не получится обработать объекты командлета Get-MessageTrackingLog.

Попробуем подсчитать количество всех сообщений, которые приняли пользователи нашей организации. Для этого нужно ввести дополнительное условие, которое будет отфильтровывать ненужных получателей вне домена. Сделать это можно с помощью Where-Object 10 (сокращенно where):

Источник: https://blog.bissquit.com/mail-servers/exchange-server/get-messagetrackinglog-exchange-2013/

Ссылка на основную публикацию