Управляем Exchange 2010 и Lync 2010 из одной сессии PowerShell


ex

В новом и интересном PowerShell 3 есть замечательная штука- автоматическая загрузка модулей. Теперь, если вы забыли загрузить модуль перед выполнением командлета, консоль не будет вас ругать, а просто автоматически загрузит необходимый модуль. Правда, это сказывается на скорости выполнения скрипта, поэтому, конечно нужные модули на каждый день лучше подгружать сразу в профиль. А как быть простым парням с  PowerShell версии 2?

 Локально (установлены инструменты управления)

Если консоли Exchange 2010 Management tools и Lync Server 2010 Management Tools установлены на вашей рабочей станции, добавьте небольшой фрагмент кода в ваш профиль PowerShell. Если вы еще не устанавливали профиль, то самое время это сделать, запустив Get-Help about_Profiles. Результат похож на выполнение логон скрипта, только для сессии PowerShell

#Загружаем командлеты Exchange 
. 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto

#Импортируем модуль Lync 
Import-Module Lync

Как видно, здесь происходит  выполнение скрипта RemoteExchange.ps1, который устанавливается вместе с инстументами управления Exchange. Скрипт загружает командлеты и специфические функции Exchange в консоль, одна из которых (Connect-ExchangeServer) автоматически подключается к серверу Exchange в локальном сайте. После этого импортируется и модуль Lync.

Удаленно (инструменты управления не установлены)

Устанавливать инструменты управления, конечно, совсем не обязательно- достаточно будет использовать  удаленное подключение PowerShell. Достаточно будет вставить в профиль следующий код, не забыв обновить в нем имена серверов:

#Импортируем командлеты Exchange 
$exch = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exchange1/powershell
Import-PSSession $exch

#Импортируем модуль Lync 
$lyncOptions = New-PSSessionOption -SkipRevocationCheck -SkipCACheck -SkipCNCheck
$lync = New-PSSession -ConnectionUri https://lync1/ocspowershell `
-SessionOption $lyncOptions `
-Authentication NegotiateWithImplicitCredential

Import-PSSession $lync

Этот код импортирует командлеты для Exchange 2010 и Lync Server 2010 в одну консоль, используя удаленное подключение. Предполагается, что для этого имеются необходимые полномочия на конечных серверах.

Замечу также, что для импорта командлетов Lync необходимо указать https привязку. Поскольку виртуальная директория OCSPowerShell на IIS требует SSL, и по умолчанию защищена самоподписанным сертификатом, мы используем здесь параметр игнорирования строгой проверки SSL.

Для чего мы все это делали?

Нетрудно догадаться, что все проделанное выше ставит перед собой одну простую цель- сокращение запущенных консолей и упрощение администрирования. Давайте попробуем подключить для пользователя почтовый ящик и lync одновременно:

Enable-Mailbox -Identity E.tarasov |
  Select-Object -Expand Identity |
    Enable-CsUser -SipAddressType EmailAddress -RegistrarPool pool.mylynclab.ms

Командлет Enable-Mailbox создает почтовый ящик для существующего пользователя в Active Directory, и также выводит свойство Identity пользователя по завершении. Передав этот объект по конвейеру Enable-CsUser,  мы убъем двух зайцев одной строкой кода. New-Mailbox работает точно также.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.