Управление Office 365 средствами Windows PowerShell

OSzone.net » Microsoft » PowerShell » Управление Office 365 средствами Windows PowerShell
Автор: Грэг Шилдс
Иcточник: TechNet Magazine
Опубликована: 18.05.2012

В моей компании, Concentrated Technology, недавно завершился переход с Google Apps for Business на Microsoft Office 365, и произошло все на удивление гладко. Средствами простого продукта стороннего разработчика мы перенесли свои данные на новую платформу, задействовав лишь пару паролей и один щелчок мыши в расчете на одного пользователя.

Внезапно мы оказались в совершенно новой инфраструктуре с абсолютно новыми правилами. Мы хорошо знакомы с технологиями Microsoft, тем не менее мы не представляли себе широту возможностей использования Windows PowerShell в Office 365. Кому-то сама мысль о совмещении Windows PowerShell и Office 365 может показаться несуразной. К таким решениям, как Office 365, обычно обращаются в поисках простоты.

Однако выполнение задач в Windows PowerShell не всегда связано с трудностями, тем не менее, назвать эту процедуру тривиальной тоже нельзя. Сложнее всего начать. Поэтому в этом выпуске я предлагаю вашему вниманию краткий курс молодого бойца по применению Windows PowerShell в Office 365. Почитайте статью и изучите несколько ключевых комадлетов и, возможно, вы обнаружите для себя, что мощь и простоту не всегда можно считать взаимоисключающими понятиями.

Шаг 1. Освоение (настоящего) удаленного выполнения

Windows PowerShell по-настоящему мощный инструмент. Однако есть проблема «начального накопления капитала» знаний — на первых порах новичок не знает, за что хвататься. Это состояние наступает после изучения нескольких, самых базовых командлетов, но до понимания, как создавать действительно полезные решения. Одно дело выполнить Get-Process и посмотреть, какие процессы выполняются на локальном компьютере, и совершенно другое — передать серию командлетов по конвейеру на удаленный компьютер для выполнения какой-то реально полезной работы.

Я бы посоветовал потратить немного времени на то, чтобы разобраться, как работает удаленное взаимодействие PowerShell в локальной сети. Узнайте, как работает параметр –computerName с некоторыми командлетами, а также о том, что в других ситуациях надо применять Invoke-Command. Освойте командлет Get-Help и его исключительно полезный параметр –exa, позволяющий посмотреть на примеры.

Все это необходимо, потому что в Office 365 это активно используется, причем для понимания происходящего требуется крепкий теоретический фундамент. При работе с командлетами Office 365 сам придется работать не со своими машинами, а с серверами Microsoft, пересылая команды по Интернету, а не по локальной сети. Вот почему придется немного перестроить мозги на другой лад, но это очень полезное занятие. Освоение этих принципов оплатится сторицей, когда вы обнаружите новые мощные возможности, открывающиеся пользователям PowerShell.

Шаг 2. Подготовка среды PowerShell

В исходном состоянии Windows PowerShell не поддерживает работу с Office 365. Чтобы ваш компьютер с Windows 7 научился «разговаривать на языке» Office 365, необходимо выполнить несколько подготовительных операций.

На странице Использование Windows PowerShell для управления Office 365 загрузите и установите командлеты для работы с Office 365. Они устанавливаются в составе модуля Microsoft Online Services Module для Windows PowerShell. Есть 32- и 64-разрядные версии. Перед установкой потребуется установить на локальном компьютере Помощник по входу в службы Microsoft Online Services, а также Windows PowerShell и .NET Framework 3.5.1.

Шаг 3. Импорт модуля, создание сеанса, импорт команд

Установка командлетов Windows PowerShell — всего лишь начало. Нужно еще подключить их к облаку Microsoft Office 365. Подключение в облаку — довольно хлопотливый, но несложный процесс, состоящий из пяти шагов:

1. Импортируйте свой только что установленный модуль Online Services.

2. Введите учетные данные Office 365.

3. Создайте сеанс удаленного взаимодействия.

4. Импортируйте команды сеанса в локальный сеанс Windows PowerShell.

5. Подключитесь к службам Office 365.

Пять команд, которые выполняют эту задачу приведены ниже:

Import-Module MSOnline

$O365Cred = Get-Credential

$O365Session = New-PSSession -ConfigurationNameMicrosoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $O365Cred -Authentication Basic -AllowRedirection

Import-PSSession $O365Session

Connect-MsolService –Credential $O365Cred

Эта структура может показаться сложной, но не забывайте, что Windows PowerShell предназначен для решения любых задач. В результате некоторые команды оказываются длиннее. Нужно понимать, что эта структура выполняет пять задач: во-первых, она использует Import-Module для добавления в сеанс командлетов Office 365, что позволяет локальному сеансу «разговаривать» на языке Office 365.

Во-вторых, открывается диалоговое окно, где нужно ввести имя пользователя и пароль Office 365 (они выглядят так: mailto:username@domain.onmicrosoft.com). Учетная информация хранится в переменной $O365Cred, что позволяет использовать ее в дальнейшем.

А сейчас начинаются действительно интересные вещи. Третья и четвертая команды создают сеанс Windows PowerShell в облаке по адресу https://ps.outlook.com/powershell. Затем импортируются командлеты из облачного сеанса в локальный. Это похоже на использование PSExec для доступа к командной строке удаленного компьютера. Большая разница заключается в том, что удаленный сервер размещен где-то в облаке. Удаленный сеанс интегрируется в локальный (рис. 1).

*

Рис. 1. Создание удаленного сеанса Office 365

Взгляните еще раз на текст на рис. 1. Вы увидите что-то типа:

WARNING: Your connection has been redirected to the following URI:

"https://pod51018psh.outlook.com/PowerShell-LiveID?PSVersion=2.0"

WARNING: Your connection has been redirected to the following URI:

"https://sn2prd0702psh.outlook.com/PowerShell-LiveID?PSVersion=2.0"

URI-адрес может отличаться. При подключении по адресу https://ps.outlook.com/powershell сеанс автоматически перенаправляется на хост, на котором расположены ваши ресурсы Office 365. В моем случае это серверы pod51018psh.outlook.com и sn2prd0702psh.outlook.com.

У вас они скорее всего будут другими. Это серверы, с которыми вы будете непосредственно взаимодействовать при вызове команд Office 365 Windows PowerShell.

Шаг 4. Используйте свою новую библиотеку команд

После подключения вы готовы к управлению своими активами Office 365. На этом этапе средствами Windows PowerShell доступны только ресурсы Office 365 и Exchange. Чтобы получить доступ к SharePoint, нужны дополнительные шаги.

Список командлетов Office 365 можно получить, выполнив команду Get-Command -module MSOnline. Удобную таблицу этих команд с кратким описанием каждой вы найдете на следующей веб-странице:

Есть исключительно полезный командлет для изменения пароля Office 365. Он сбрасывает пароль к значению P@ssword!. Можно также опустить параметр –NewPassword, чтобы автоматически сгенерировать случайный пароль:

Set-MsolUserPassword -UserPrincipalNameusername@domain.onmicrosoft.com-NewPasswordP@ssword!

Эти командлеты работают с объектами Office 365. К ним прилагается второй набор, служащий для управления ресурсами Exchange, с которыми взаимодействуют эти объекты. Общее количество командлетов огромно, но на следующей странице есть удобный справочник по ним:

Шаг 5. Профили, облегчающие жизнь

Пять команд в шаге 3, служащих для подключения к облаку, довольно объемны. Вводить весь этот текст при каждом входе для работы с Windows PowerShell создает серьезные сложности. Но основное преимущество Windows PowerShell — и создания сценариев в оболочке вообще — заключается именно в том, что сделав что-то раз, можно забыть о проблеме завсегда.

При каждом запуске Windows PowerShell выполняются все команды, содержащиеся в переменной $profile. Узнать, где лежит файл с командами, можно, выполнив в оболочке команду dir $profile.

У меня для переменной $profile используется файл Microsoft.PowerShell_profile.ps1 (рис. 2), расположенный в папке C:\Users\gshields\Documents\WindowsPowerShell. Чтобы добавить дополнительные команды в этот файл, можно воспользоваться любым текстовым редактором. Но не всегда при запуске Windows PowerShell требуется вводить имя пользователя и пароль и автоматически подключаться к Office 365, а также ко всем ресурсам сети.

*

Рис. 2. Просмотр содержимого переменной $profile

Дополнительные возможности означают повышенную ответственность

Следуя описанным шагам можно создать интегрированное рабочее пространство, в котором можно управлять своими локальными и удаленными ресурсами. Но повышенная полезность означает также повышенную опасность.

Если вас позабавили возможности команды Get-Process | Stop-Process (подсказка: никогда этого не делайте), вы наверняка ужаснетесь от того, что может натворить команда Get-MsolUser | Remove-MsolUser. Поэтому отнеситесь с осторожностью к своим новым возможностям. Никогда не забывайте о возложенной на вас высокой ответственности.


Ссылка: http://www.oszone.net/18004/Office-365-PowerShell