Exchange Management Shell: Возможно Все!

PowerShell как инструмент администрирования Microsoft Exchange-сервер Впервые появился в версии продукта 2007 года, уже 5 лет назад. С тех пор его возможности в Exchange Server только расширились, а внедрение удаленного взаимодействия Powershell открыло для администраторов совершенно новые возможности.

Системные администраторы осваивают этот язык сценариев, но ситуация, в которой они оказываются, совсем не та.

Кто-то переносит свой сервер с 2003 на 2010, и для него Powershell является настоящим испытанием.

Админы 2007 и 2010 как минимум открыты Командная консоль Exchange (ЕМС) и экспериментировал с этим.

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

Некоторые после этих попыток бегут обратно к комфорту Консоль управления Exchange (EMC) .

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

Ни для кого не секрет, что Powershell может существенно улучшить некоторые аспекты управления сервером, заполняя «слепые пятна», оставленные Майкрософт .

Существует множество примеров использования Powershell для выполнения чрезвычайно важных с административной точки зрения задач — Например, когда я ранее работал у крупного американского провайдера, серьезной проблемой была высокая задержка RPC на CAS-серверах, возникающая из-за проблем с некоторыми версиями iOS. Проверка загрузки CAS-серверов путем мониторинга количества активных подключений, определения используемого при подключении клиента, экспорта необходимой информации и составления html-отчетов — все это делалось в Powershell и оказывало огромную помощь.

Powershell, вероятно, не самый простой в использовании язык.

В Сервер Exchange 2010 с пакетом обновления 1 (SP1) — более полутысячи командлетов и на их изучение потребуется время.

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

В этой статье я рассмотрю несколько полезных вариантов использования для системного администратора.

Командная консоль Exchange .

Хочу подчеркнуть, что цель статьи не охватить всё (а это невозможно!), а показать, что PowerShell для нас, фанатов Microsoft Exchange-сервер , действительно все.



1. Создавайте отчеты и экспортируйте их.

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

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

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

Существует более чем достаточно командлетов, начиная с Get-* в сочетании с Windows PowerShell и Exchange Management Shell, что обеспечивает поистине безграничные возможности для настройки отчетов.

Стандартно экспорт осуществляется либо в формате .

txt, либо в .

csv — оба крайне удобны для любых последующих манипуляций с данными.

Обычно для экспорта в текстовый файл или файл CSV используется командлет Out-File (для CSV — Export-CSV).

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

Get-Mailbox | Select-Object Name,WhenCreated | Out-File c:\xfer\report.txt



Exchange Management Shell: возможно все!

Надо сказать, что наряду с «правильным» командлетом Out-File для Powershell работает и олдскульный —

[PS] C:\Windows\system32>Get-Mailbox | Select-Object Name,WhenCreated > c:\xfer\report.txt



2. Массовое создание пользователей из CSV-файла.

Другой типичный сценарий администрирования Exchange — массовое создание пользователей из файла CSV. Его можно использовать при миграции пользователей из другой среды, при слиянии компаний или просто при крупномасштабном найме новых сотрудников.

Для этого сценария типично использование файлов CSV. Сначала вам нужно подготовить CSV-файл.

Если администратор хочет облегчить себе последующее изменение атрибутов пользователей, то логично предусмотреть все заранее.

При миграции или перемещении пользователей из среды на основе ActiveDirectory экспорт необходимых атрибутов пользователей AD позволит быстро создать их в новом месте, в новой ActiveDirectory. Ээкспортируем через get-user, выбираем нужные атрибуты и полученный результат переносим в CSV-файл.

Теперь у нас есть CSV-файл, полностью готовый для последующего импорта.

В большинстве случаев достаточно следующего набора информации в файле CSV: Фамилия, Имя, Имя, Имя участника-пользователя, Пароль Импортируем наш готовый к импорту файл в ActiveDirectory, там следующей командой, меняя нужные нам переменные:

Import-CSV c:\xfer\our_import.csv | ForEach-Object { New-Mailbox -Lastname $_.”LastName” -Name $_."Name" -FirstName $_.”FirstName” -Organization Our Organization -Database DB1 -UserPrincipalName $_.”UserPrincipalName” -Password (ConvertTo-SecureString $_.password -AsPlainText -Force)}

Введя в конструкцию параметр –ResetPasswordOnNextLogon со значением $true, мы заставим пользователей сменить пароль при первом входе в систему.

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

Аналогично, Powershell позволяет работать как со списками рассылки, так и с контактами.



3. Как удалить «плохое» сообщение сразу со всех ящиков?
Однажды в своей практике я столкнулся с интересным (и крайне актуальным!) запросом пользователя, который требовал удалить из почтовых ящиков одно письмо с крайне конфиденциальной для компании информацией, отправленное на общую рассылку ранее уволенным сотрудником.

всех сотрудников организации (более 200).

.

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

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



get-mailbox -OrganizationalUnit Needed_OU -ResultSize unlimited | Search-Mailbox -SearchQuery Subject:'Very bad message' -TargetMailbox [email protected] -TargetFolder Inbox –DeleteContent



4. Проверьте размер почтовых баз
По сравнению с Exchange 2007 последняя версия сервера Exchange делает эту операцию намного удобнее.

Обновленный командлет Get-MailboxDatabase позволяет получить практически любую информацию.

Получаем базы данных с именем, сервером, статусом монтирования и размерами:

Get-MailboxDatabase -Status | select-object Name,Server,DatabaseSize,Mounted



Exchange Management Shell: возможно все!



5. Почтовый клиент и почтовые ящики
Exchange 2010 разрешает доступ клиентов к почтовым ящикам в зависимости от версии клиента Outlook и метода доступа к почтовому ящику.

Существует несколько вариантов ограничения доступа по различным критериям.

Например, мы хотим запретить подключение через RPC over HTTPS —

Set-CASMailbox -Identity [email protected] -MAPIBlockOutlookRpcHttp $true

Такой командлет не позволит клиенту, настроенному не в кэшированном режиме, работать с почтовым ящиком — Set-CASMailbox -Identity [email protected] -MAPIBlockOutlookNonCachedMode $true И мы не позволим таким пользователям использовать версии Outlook старше 2003.

Get-CASMailbox -Resultsize Unlimited | Set-CASMailbox -MAPIBlockOutlookVersions '-5.9.9;7.0.0-10.9.9'

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

Get-Mailbox -OrganizationalUnit groza -Resultsize unlimited | Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | Select-Object DisplayName,@{Name="TotalItemSize(KB)";Expression={$_.TotalItemSize.Value.ToKB()}},ItemCount,lastlogontime,lastlogofftime,lastloggedonuseraccount | Export-Csv c:\xfer\groza.csv | foreach {$_.length=($_.length)/1024/1024/1024; $_}



Exchange Management Shell: возможно все!

А вот информация о свободном месте на жестких дисках нужного сервера: Get-WmiObject -Class Win32_Logicaldisk -имя_компьютера | выберите идентификатор устройства, имя тома, свободное пространство

Exchange Management Shell: возможно все!



6. Клиентский доступ
В Exchange Management Shell имеется достаточное количество командлетов, которые системные администраторы могут использовать для устранения наиболее распространенных проблем, которые могут возникнуть во время работы производственной среды.

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

Проверим возможность входа в конкретную базу данных —

Test-MAPIConnectivity -Database DB1

Или на конкретный почтовый ящик -

Test-MAPIConnectivity –Identity [email protected]



Exchange Management Shell: возможно все!

Или на конкретном сервере -

Test-MAPIConnectivity -Server MBX1

Проблемы с RPC-соединениями диагностируются с помощью командлета Test-OutlookConnectivity. Основное отличие от предыдущего командлета — необходимость указать пароль тестируемого пользователя.

Поскольку роль CAS-сервера в Exchange 2010 обеспечивает доступ по большому количеству протоколов, вполне естественно, что создатели Microsoft Exchange Server 2010 позаботились о том, чтобы не было недостатка в необходимых командлетах: Test-ActiveSyncConnectivity — тестирует протокол ActiveSync; Test-CalendarConnectivity – проверка доступности календаря; Test-EcpConnectivity — проверка виртуального каталога ECP на выбранном сервере CAS. Test-ImapConnectivity — проверка состояния службы IMAP и возможности подключения клиента по этому протоколу.

Test-OutlookWebServices — проверка корректности информации, предоставляемой пользователю службой AutoDiscover. Test-OwaConnectivity — проверка виртуального каталога OWA на указанном CAS-сервере.

Test-WebServicesConnectivity — проверяет веб-службы Exchange, которые используются, например, Outlook для Mac, Mac Mail и некоторыми другими клиентами.

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

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

Теги: #Хостинг #PowerShell #exchange 2010 #infobox.ru #оболочка управления обменом

Вместе с данным постом часто просматривают: