В этой статье мы рассмотрим управление лицензиями (подписками) у пользователей в 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 – количество лицензий, назначенных пользователям.
В рамках одного лицензионного плана вы можете использовать различные продукты 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 .
Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…
В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…
Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…
Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…
Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…
В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…