Назначение лицензий пользователям в Microsoft 365 (AzureAD) с помощью PowerShell

В этой статье мы рассмотрим управление лицензиями (подписками) у пользователей в Microsoft 365 (Office 365) с помощью PowerShell. Рассмотрим, как назначить или удалить лицензию, получить статистку по назначенным лицензиям и настроить автоматическое назначение лицензий с помощью групп Azure.

Вы можете управлять лицензиями пользователей Microsoft 365 через портал Azure или Admin Center. Найдите нужного пользователя в Azure AD, перейдите в раздел Licenses. Здесь вы можете назначить ему одну из доступных лицензий и выбрать доступные продукты. В крупных организациях чаще всего приходится управлять лицензиями Microsoft 365 с помощью PowerShell.

Для подключения к Microsoft 365 воспользуйтесь модулем Azure AD PowerShell :

Connect-AzureAD

Список доступных вам лицензий в разделе Azure AD -> Licenses -> App products. В нашем случае доступны 25 лицензий типа Microsoft 365 E5 Developer, из которых 9 свободны.

В PowerShell информацию о доступных и назначенных лицензия в вашем тенанте можно вывести так:

Get-AzureADSubscribedSku | Select -Property Sku*,ConsumedUnits -ExpandProperty PrepaidUnits

В SkuPartNumber указано название лицензии (лицензионного плана). В Enabled – количество лицензий, приобретенных в рамках данного плана. ConsumedUnits – количество лицензий, назначенных пользователям.

Для адресации лицензий в скриптах PowerShell используется ее SkuID .

В рамках одного лицензионного плана вы можете использовать различные продукты Microsoft.

В нашем примере в тенанте доступен только один лицензионный план DEVELOPERPACK_E5 . Выведем список доступных сервисов Microsoft 365, которые ваши пользователи могут использовать.

$licenses = Get-AzureADSubscribedSku
$licenses[0].ServicePlans

В столбце ServicePlanName указаны названия продуктов, доступных вашим пользователем с данной лицензией.

Можно вывести информацию о лицензиях, назначенному определённому пользователю. Сначала получим SkuID лицензии, назначенной пользователю, и затем по ней выведем ее название.

$SkuIDs=(Get-AzureADUser -ObjectId [email protected] | Select -ExpandProperty AssignedLicenses).SkuId
Foreach ($SkuID in $SkuIDs) {
(Get-AzureADSubscribedSku | Where {$_.SkuId -eq $SkuID}).SkuPartNumber
}

Попробуем назначить пользователю лицензию. Но прежде чем назначать лицензию, нужно убедиться, что для пользователя назначено местоположение (страна). Это обязательное требование, т.к. в зависимости от страны на пользователей могут действовать различные правила местного законодательства (особенно это важно для Exchange Online). Задайте двухсимвольный код страны в формате ISO alpha-2.

Get-AzureADUser -ObjectId [email protected] | Select UsageLocation, AssignedLicenses

Если страна не задана, или ее нужно изменить, выполните:

get-AzureADUser -ObjectId [email protected] | Set-AzureADUser -UsageLocation RU

Теперь можно назначить лицензию пользователю

$UserUPN=" [email protected] "
$LicPlan="DEVELOPERPACK_E5"
$License = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$License.SkuId = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $LicPlan -eq).SkuID
$assignlic = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$assignlic.AddLicenses = $License
Set-AzureADUserLicense -ObjectId $UserUPN -AssignedLicenses $assignlic
Get-AzureADUserLicenseDetail -objectid $UserUPN

Можно назначить лицензию сразу нескольким пользователям. Например, назначим лицензию всем пользователем в регионе RU:

$LicPlan="DEVELOPERPACK_E5"
$License = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$License.SkuId = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $LicPlan -eq).SkuID
Get-AzureADUser -Filter "UsageLocation eq 'RU'”| Set-AzureADUserLicense -AssignedLicenses $assignlic

Чтобы удалить лицензию у пользователя, используйте такой PowerShell скрипт:

$userUPN=" [email protected] "
$LicPlan="DEVELOPERPACK_E5"
$license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$License.RemoveLicenses = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $LicPlan -EQ).SkuID
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $license

Чтобы вывести список пользователей без лицензии, выполните команду:

Get-AzureAdUser | ForEach{ $licensed=$False ; For ($i=0; $i -le ($_.AssignedLicenses | Measure).Count ; $i++) { If( [string]::IsNullOrEmpty( $_.AssignedLicenses[$i].SkuId ) -ne $True) { $licensed=$true } } ; If( $licensed -eq $false) { Write-Host $_.UserPrincipalName} }

Следующий PowerShell скрипт позволит выгрузить в CSV файл информацию о пользователях Azure и назначенных им лицензий. Если пользователю не назначена лицензия, в отчете для него будет указано “Not Licensed”.

$Report = @()
$users= Get-AzureAdUser
Foreach ($user in  $users)  {
$SkuIDs= @()
$SkuIDs=(Get-AzureADUser -ObjectId $user.UserPrincipalName| Select -ExpandProperty AssignedLicenses).SkuId
If ($SkuIDs -ne $null) {
Foreach ($SkuID in $SkuIDs) {
$License=(Get-AzureADSubscribedSku | Where {$_.SkuId -eq $SkuID}).SkuPartNumber
$objReport = [PSCustomObject]@{
UPN = $user.UserPrincipalName
DisplayName = $user.DisplayName
Department = $user.Department
License = $License
}
$Report += $objReport
}
}
Else
{
$objReport = [PSCustomObject]@{
UPN = $user.UserPrincipalName
DisplayName = $user.DisplayName
Department = $user.Department
License = "Not licensed"
}
$Report += $objReport
}
}
$Report|Export-Csv c:psazure_user_licenses.csv -Encoding UTF8 -NoTypeInformation

Управлять лицензиями персонально для каждого пользователя не очень удобно и трудозатратно по времени. В Azure AD вы можете привязать лицензию к группе Azure (group-based licensing). Как только пользователь добавляется в данную группу, Azure сама назначает ему лицензию. Но для использования этого функционала нужна лицензия Azure AD Premium P1. Кроме того, стандартный модуль AzureAD не позволяет назначить лицензию группе. Функции группового лицензирования доступны через портал Azure или програмно через Microsoft Graph API .

admin

Share
Published by
admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

3 дня ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

3 дня ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

3 дня ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

3 дня ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

3 дня ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

3 дня ago