MapiExceptionMailboxDisabled: Unable to open message store.

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

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

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

MapiExceptionMailboxDisabled: Unable to open message store. (hr=0x80004005, ec=2412)
Diagnostic context:
Lid: 55847 EMSMDBPOOL.EcPoolSessionDoRpc called [length=144]
Lid: 43559 EMSMDBPOOL.EcPoolSessionDoRpc returned [ec=0x0][length=264][latency=0] и т.д.

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

Clean-MailboxDatabase -Identity <имя базы>

Как запустить gpupdate удаленно

Классический способ, это использование psexec:

Параметром /target:user вы можете указать обновление политики только для пользователя, параметром /target:computer — только для компьютера.

Есть способ, как можно запустить gpupdate удаленно без использования psexec. Это PowerShell командлет Invoke-GPUpdate.

Чтобы запустить форсированное обновление политик компьютера, используйте:

Параметр Target определяет, производить обновление для компьютера или пользователя. Для запуска обновления политик пользователя, замените Target на user.

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

Если вы не укажете параметр Target, то обновление затронет как пользовательские политики, так и политики компьютера.

Должен предупредить, что процесс на конечной машине не останется незамеченным, т.к. появится окно CMD, в котором отображается процесс обновления политик.

А теперь запустим обновление для компьютеров в определенной OU:

Преобразование почтового ящика в Shared Mailbox

Случается так, что ящик, предназначенный для общего использования был создан не как Shared Mailbox, а как User Mailbox. Сразу возникает мысль о том, можно ли его конвертировать. Беглый поиск нам выдает, что это можно сделать через EAC, но только в Office 365. Не расстраиваемся, т.к. в on-premise Exchange 2013 это можно сделать через PowerShell:

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

Как вернуть базы Exchange на место

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

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

Но если баз много, то лучше воспользоваться специальным скриптом RedistributeActiveDatabasesдля этих целей, находящимся в инсталляциях Exchange начиная с версии 2010 SP1 в каталоге Scripts:

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

Ищем, считаем сообщения в Message Tracking Logs

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

По умолчанию возраст хранения Message Tracking Log составляет 30 дней, проверить это вы можете командой:

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

Сброс пароля пользователям по списку

Сегодня потребовалось сделать сброс пароля пользователям, список которых содержится в CSV. Я специально предлагаю основным вариантом импорт из текстового файла, так как это может потребоваться чаще.

Пример выполнения:

Сброс пароля пользователям

Если вдруг понадобится обработать не текстовый файл, а CSV, то просто поменяйте Get-Content $InputFile на (Import-Csv $InputFile).имяколонки. При следующем входе в систему пользователь должен будет изменить пароль.

Поиск ящиков, объем которых больше, чем

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

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

Sending data to a remote command failed with the following error message: The total data received from the remote clien
t exceeded allowed maximum. Allowed maximum is 524288000. For more information, see the about_Remote_Troubleshooting He
lp topic.
+ CategoryInfo : OperationStopped: (System.Manageme…pressionSyncJob:PSInvokeExpressionSyncJob) [], PSRe
motingTransportException
+ FullyQualifiedErrorId : JobFailure

Читать далее

Отключение ActiveSync всем, кроме

После переноса с Exchange 2003 на 2010 все почтовые ящики оказались с включенным ActiveSync. Разумеется, надо отключать. Если у вас в организации мобильный доступ не приветствуется, то вы можете отключить ActiveSync сразу для всех учетных записей командой:

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

В некоторых случаях могут использоваться две группы, т.к. одна для пользователей, подключающихся через Reverse Proxy, вторая для пользователей подключающихся через MDM:

UPD: Случайно попался более лаконичный вариант, чем мой:

Копирование прав учетной записи

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

В случае, если эту операцию нужно сделать для одного домена, можно воспользоваться короткой командой:

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

Поиск пользователей в дочерних доменах

Если ваша организация раскинута на множество филиалов, то за порядком не всегда можно уследить. Очень часто возникает задача, когда надо проверить, у всех ли пользователей стоит наследование прав и нет ли тех, кому значение атрибута adminCount = 1 иметь не положено. В общем, задачи могут быть совершенно разные.

Вашему вниманию предлагается скрипт, производящий поиск в дочерних доменах на предмет наличия таких пользователей. Поскольку в организации могут быть контроллеры доменов с Windows Server 2003, реализовать поиск решено было через LDAP.