sergey vasin

The IT blog

Используем PowerShell для проверки статуса баз данных Exchange – Hey, Scripting Guy! Blog

leave a comment »

Резюме: 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.

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2012/12/14/use-powershell-to-check-the-status-of-exchange-databases.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Written by Сергей Васин

Декабрь 28, 2012 в 16:38

Опубликовано в HeyScriptingGuyBlog, PowerShell

Tagged with

Добавить комментарий

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

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s