Блог

Вы здесь

Настройка и лицензирование учетных записей Office 365 в PowerShell

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

Допустим, сейчас Вы используете командлеты Active Directory Quest, модуль Active Directory PowerShell или даже ADSI для автоматизации настройки учетных записей пользователей локально. При миграции в облачные сервисы Office 365 этот процесс Вы можете, как изменить, так и оставить без изменений. Например, Вы хотите настроить единый вход в систему, или развернуть гибридную версию Exchange. В этом случае Вы можете, как и прежде, настраивать локальные учетные записи пользователей на сервере, в последующем они автоматически синхронизируются с облаком посредством DirSync.

Если Вы не планируете использовать DirSync, то в данном случае автоматизировать лицензирование пользователей Вы можете при помощи модуля Microsoft Online Services для Windows PowerShell.

Установка Microsoft Online Services Module

Прежде чем загрузить и установить модуль Microsoft Online Services для PowerShell, ознакомьтесь с требованиями:

  • Операционная система: Windows 7 ,Windows Server 2008 R2
  • .NET Framework не ниже версии 3.5.1
  • Microsoft Online Services Sign-In Assistant —регистрирует в портале Office 365 и облачных службах.
  • Необходимо также установить и сконфигурировать настольные приложения Office (внизу экрана выберите опцию «Установить и сконфигурировать Office desktop apps)

Когда все требования выполнены, то можете приступать к загрузке и установке модуля. Актуальная версия модуля всегда доступна на следующих ресурсах:

Установка соединения

Если при установке модуля Вы не изменяли опции по умолчанию, то на рабочем столе появится ярлык Microsoft Online Services Module for Windows PowerShell. Начать работу Вы можете, используя этот ярлык. Так же можно вручную импортировать модуль в стандартную консоль PowerShell, используя командлет Import-Module MSOnline.

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

Во-первых, необходимо создать учетный объект, используя командлет Get-Credential, в котором сохраняться учетные данные администатора тенанта Office 365 (создается объект PSCredential):

PS> $cred = Get-Credential

Далее запускаем командлет Connect-MsolService и предоставляем ему свои учетные данные (объект PSCredential):

PS> Connect-MsolService -Credential $cred

После завершения команды будет установлено соединение с тенантом Office 365.

Просмотр лицензий

После установки соединения Вы можете просмотреть текущую конфигурацию лицензирования, используя командлет Get-MsolAccountSku, который возвращает все SKU принадлежащие организации. Вы получите детальную информацию по лицензированию, узнаете сколько лицензий используется, сколько доступно всего:

Если Вам необходимо будет затребовать лицензии пользователей, которые были созданы из оболочки или были синхронизированы с DirSync, необходимо будет знать номер SKU учетной записи в формате tenant:SkuPartNumber. Например, на рисунке выше: в системе прошла регистрация учетной записи подписки ENTERPRISE, имя тенанта – uclabs, используется 5 из 25 доступных лицензий.

Настройка учетных записей пользователей

Для создания новой учетной записи пользователя используем командлет New-MsolUser. Давайте для примера создадим пошагово учетную запись пользователя и присвоим лицензии в процессе настройки:

New-MsolUser -UserPrincipalName sjohnson@uclabs.onmicrosoft.com `

-DisplayName 'Steve Johnson' `

-FirstName Steve `

-LastName Johnson `

-LicenseAssignment uclabs:ENTERPRISEPACK `

-UsageLocation US

Заметьте, что параметр –Password не использовался для присвоения начального пароля. В таком случае учетной записи присваивается случайный пароль:

Вы можете вручную изменить пароль, используя параметр –Password :

На рисунке Вы видите, что присваиваемый первоначально случайный пароль не безопасный. Потребуется замена паролей учетных записей на более сильные, которые отвечают следующим требованиям:

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

Если Вы не хотите придерживаться таких требований, то можете прописать:

StrongPasswordRequired в $false (параметр доступен с командлетом New-MsolUser) или отключить требования к паролю в командлете Set-MsolUser.

Выборочное лицензирование

Лицензии Office 365 могут содержать подмножество подписок. Например, на рисунке Вы видите настройки лицензирования в Microsoft Online Services Portal для пользователя с лицензией плана E3 — на экран выводятся все доступные подписки:

Вы можете отключать при лицензировании определенные подписки, выбирать лишь необходимые, но для этого необходима информация о доступных подписках. В приведенном примере мы видим детально план EnterprisePack sku, который возвращает командлет Get-MsolAccountSku :

Get-MsolAccountSku | Where-Object {$_.SkuPartNumber -eq 'ENTERPRISEPACK'} |

ForEach-Object {$_.ServiceStatus}

Не совсем очевидные на первый взгляд результаты. Вот что подразумевается:

  • OFFICESUBSCRIPTION – Office Professional Plus
  • MCOSTANDARD – Lync Online
  • SHAREPOINTWAC – Microsoft Office Web Apps
  • SHAREPOINTENTERPRISE – SharePoint Online
  • EXCHANGE_S_ENTERPRISE – Exchange Online

Теперь, когда мы получили необходимую информацию по подписке, можем выборочно присвоить лицензии пользователям. Например, созданную нами ранее запись мы можем изменить таким образом, чтобы пользователю были присвоены только лицензии Office Professional Plus и Exchange Online. Чтобы это сделать создаем объект параметров лицензирования, используя командлет New-MsoLicenseOptions. При выполнении данной команды мы определяем SKU учетной записи, который в нашем примере был бы tenant:ENTERPRISEPACK, затем мы отключаем определенные планы. Так же мы можем отключить подписки, используя параметр DisabledPlans:

PS> $options = New-MsolLicenseOptions -AccountSkuId uclabs:ENTERPRISEPACK `

-DisabledPlans MCOSTANDARD,SHAREPOINTWAC,SHAREPOINTENTERPRISE

В следующем примере объект параметров лицензирования LicenseOption сохранен с переменной $options, которой может быть присвоено необходимое значение при изменении учетной записи:

PS> Set-MsolUserLicense -UserPrincipalName gsmith@uclabs.onmicrosoft.com `

-LicenseOptions $options

Присвоить значение переменной $options объекту параметров лицензирования можно на этапе создания учетной записи:

New-MsolUser -UserPrincipalName jneilsen@uclabs.onmicrosoft.com `

-DisplayName 'Joe Neilsen' -FirstName Joe `

-LastName Neilsen -LicenseAssignment uclabs:ENTERPRISEPACK `

-LicenseOptions $options -UsageLocation US

Напомним, что управлять службой Exchange Online также можно через удаленную среду Exchange PowerShell, но если Вы присваиваете лицензию Microsoft Online Services Module для Powershell, то почтовый ящик включается автоматически.

Многократное лицензирование

В некоторых ситуациях есть необходимость многократно повторять процесс присвоения лицензии для учетных записей. Это особенно актуально, если Вы будете использовать DirSync для синхронизации локальных учетных записей пользователей с облаком — в конечном счете, каждому пользователю должна быть присвоена лицензия. В этом случае воспользуйтесь командлетом Get-MsolUser, который определит, какие пользователи в настоящее время не лицензированы (параметр UnlicensedUsersOnly):

Делаем выборку всех нелицензированных пользователей и передаем эти объекты по каналу вниз к командлету Set-MsolUserLicense, а затем присваиваем лицензии учетным записям.

В первую очередь, все же удостоверьтесь, что для учетных записей прописан регион использования. Вот пример, в котором регион использования для всех нелицензированных учетных записей – США:

Get-MsolUser -UnlicensedUsersOnly | Set-MsolUser -UsageLocation us

Теперь лицензируем этих пользователей:

Get-MsolUser -UnlicensedUsersOnly |

Set-MsolUserLicense -AddLicenses uclabs:ENTERPRISEPACK

Дополнительно можете использовать объект параметров лицензирования LicenseOptions, если есть необходимость выборочно подключить подписки пользователям.

Настройка учетных записей из файлов CSV

Создать учетные записи в веб-портале можно используя файл CSV — это позволяет присваивать множество лицензий сразу. Работает это нас самом деле отлично. Вот как это выглядит:

Как видите, значения в столбцах соответствуют параметрам, которые мы ранее прописывали в командлете New-MsolUser. Фактически, мы производим CSV импорт командлетов: файл считывается в оболочку, создаются и лицензируются учетные записи в Office 365. Посмотрим на код сценария:

Import-Csv -Path c:\users.csv | ForEach-Object {

New-MsolUser -FirstName $_.FirstName -LastName $_.LastName `

-UserPrincipalName $_.UserPrincipalName `

-DisplayName "$($_.FirstName) $($_.LastName)" `

-LicenseAssignment 'uclabs:ENTERPRISEPACK' `

-UsageLocation US

}

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

Import-Csv -Path c:\users.csv | ForEach-Object {

New-MsolUser -FirstName $_.FirstName -LastName $_.LastName `

-UserPrincipalName $_.UserPrincipalName `

-DisplayName "$($_.FirstName) $($_.LastName)" `

-LicenseAssignment 'uclabs:ENTERPRISEPACK' -UsageLocation US

} | Export-Csv -Path c:\provisioned_users.csv –NoTypeInformation

Как видите, мы добавили команду Export-CSV в конце сценария, что позволит нам сохранять информацию об учетных записях, в том числе и первоначальные пароли. Используя эту информацию мы можем изменять пароли конечным пользователям.

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

Читайте также:

Синхронизация паролей при использовании DirSync

Перемещение ADFS с локальных серверов в Azure