четверг, 18 февраля 2016 г.

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.

Используем eseutil для проверки состояния базы данных Exchange

Что касается Exchange и Windows PowerShell, то нельзя сказать, что вам совсем не повезло только потому, что вам придется использовать Eseutil. Это потому, что Windows PowerShell неплохо работает с утилитами командной строки. Microsoft Windows PowerShell MVP Sean Kearney написал целую серию статей, в которых он рассказывает о работе с утилитами командной строки из Windows PowerShell.
Одна из вещей, которая мне не нравится, это то, что при работе с Eseutil вам нужно указывать путь к базе данных, с которой вы собираетесь работать. Это потому, что обычно пути представляют из себя довольно длинные строки, содержащие GUID и другие непростые вещи, которые значительно снижают шансы на их правильный ввод. К счастью, эту проблему можно довольно просто решить с помощью PowerShell. Следующая команда возвращает путь к базе данных Exchange.
Get-MailboxDatabase -Status | select edbfilepath
Команда и ее вывод приведены на следующем рисунке.
 01

Используем PowerShell для подключения и отключения баз данных Exchange

Чаще всего, когда вам приходится работать с 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

Запускаем Eseutil для каждой базы данных Exchange

Для определения состояния баз данных Exchange мне нужно запустить команду eseutil с параметром/mh. Также нужно указать полный путь к базе данных Exchange. Тут нам опять очень пригодится PowerShell. Мы уже получали путь к базе через PowerShell. Так же я знаю, что он может выполнять повторяющиеся операции. Символ «%» в нижеприведенной команде – это алиас для командлетаForeach-Object. При помощи этой команды я запущу eseutil для каждой их баз данных Exchange.
Get-MailboxDatabase -Status | % { eseutil /mh $_.edbfilepath }
Команда выводит достаточно много информации. Меня же интересует значение поля «State».
02
Если мне не хочется просматривать весь вывод, я могу отфильтровать результаты с помощью командлета 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.
Источник: здесь

Комментариев нет:

Отправить комментарий