Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья относится к Microsoft 365 корпоративный и Office 365 корпоративный.
Пользователи не могут использовать какие-либо службы Microsoft 365, пока их учетной записи не будет назначена лицензия из плана лицензирования. Вы можете использовать PowerShell для быстрого назначения лицензий нелицензированным учетным записям.
Сначала нужно назначить расположение учетным записям пользователей. Указание местоположения является обязательной частью создания новой учетной записи пользователя в Центре администрирования Microsoft 365.
Для учетных записей, синхронизированных с локальными доменными службами Active Directory, по умолчанию не указывается расположение. Расположение для этих учетных записей можно настроить здесь:
- Центр администрирования Microsoft 365
- PowerShell
- Портал Azure (пользователи>Active Directory>, учетная запись > пользователя, контактные>данные>,страна или регион).
Примечание.
Узнайте, как назначать лицензии для учетных записей пользователей в Центре администрирования Microsoft 365. Список дополнительных ресурсов см. в разделе Управление пользователями и группами.
Назначение лицензий Microsoft 365 учетным записям пользователей с помощью пакета SDK Microsoft Graph PowerShell
Примечание.
Следующий сценарий использует Microsoft Graph PowerShell. Дополнительные сведения см. в статье Обзор Microsoft Graph PowerShell.
Сведения об использовании различных методов проверки подлинности Connect-Graph в сценарии автоматической проверки подлинности см. в статье Командлеты модуля проверки подлинности в Microsoft Graph PowerShell.
Сначала подключитесь к клиенту Microsoft 365.
Для назначения и удаления лицензий для пользователя требуется область разрешений User.ReadWrite.All или одно из других разрешений, перечисленных на справочной странице по API Microsoft Graph "Назначение лицензии".
Область разрешений Organization.Read.All требуется для чтения лицензий, доступных в клиенте.
Connect-MgGraph -Scopes User.ReadWrite.All, Organization.Read.All
Выполните Get-MgSubscribedSku эту команду, чтобы просмотреть доступные планы лицензирования и количество доступных лицензий в каждом плане в организации. Число доступных лицензий в каждом плане: ActiveUnits - WarningUnits - ConsumedUnits. Дополнительные сведения о планах лицензирования, лицензиях и службах см. в статье Просмотр лицензий и служб с PowerShell.
Чтобы найти нелицензированные учетные записи в организации, выполните следующую команду.
Get-MgUser -Filter 'assignedLicenses/$count eq 0' -ConsistencyLevel eventual -CountVariable unlicensedUserCount -All
Чтобы найти нелицензированных синхронизированных пользователей в вашей организации, выполните следующую команду.
Get-MgUser -Filter 'assignedLicenses/$count eq 0 and OnPremisesSyncEnabled eq true' -ConsistencyLevel eventual -CountVariable unlicensedUserCount -All -Select UserPrincipalName
Назначать лицензии можно только тем учетным записям пользователей, для которых свойство UsageLocation имеет допустимый код страны по стандарту ISO 3166-1 alpha-2. Важно указать это значение, так как некоторые службы O365_W14_2nd недоступны в определенных странах. Некоторые службы Microsoft 365 недоступны в определенных странах или регионах. Дополнительные сведения см. в разделе О лицензионных ограничениях.
Чтобы найти учетные записи, для которых не указано значение UsageLocation , выполните следующую команду.
Get-MgUser -Select Id,DisplayName,Mail,UserPrincipalName,UsageLocation,UserType | where { $_.UsageLocation -eq $null -and $_.UserType -eq 'Member' }
Чтобы задать значение UsageLocation для учетной записи, выполните следующую команду.
$userUPN="<user sign-in name (UPN)>"
$userLoc="<ISO 3166-1 alpha-2 country code>"
Update-MgUser -UserId $userUPN -UsageLocation $userLoc
Например, вы можете:
Update-MgUser -UserId "belindan@litwareinc.com" -UsageLocation US
Если вы используете командлет Get-MgUser без использования параметра -All , возвращаются только первые 100 учетных записей.
Назначение лицензий учетным записям пользователей
Чтобы назначить лицензию пользователю, используйте следующую команду в PowerShell.
Set-MgUserLicense -UserId $userUPN -AddLicenses @{SkuId = "<SkuId>"} -RemoveLicenses @()
В этом примере нелицензированному пользователю belindan@litwareinc.comназначается лицензия из плана лицензирования SPE_E5 (Microsoft 365 E5):
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{SkuId = $e5Sku.SkuId} -RemoveLicenses @()
В этом примере пользователю belindan@litwareinc.comназначается SPE_E5 (Microsoft 365 E5) и EMSPREMIUM (ENTERPRISE MOBILITY + SECURITY E5):
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$e5EmsSku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'EMSPREMIUM'
$addLicenses = @(
@{SkuId = $e5Sku.SkuId},
@{SkuId = $e5EmsSku.SkuId}
)
Set-MgUserLicense -UserId "belinda@litwareinc.com" -AddLicenses $addLicenses -RemoveLicenses @()
В этом примере назначается SPE_E5 (Microsoft 365 E5) с отключенными службами MICROSOFTBOOKINGS (Microsoft Bookings) и LOCKBOX_ENTERPRISE (защищенное хранилище клиентов):
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$disabledPlans = $e5Sku.ServicePlans | `
Where ServicePlanName -in ("LOCKBOX_ENTERPRISE", "MICROSOFTBOOKINGS") | `
Select -ExpandProperty ServicePlanId
$addLicenses = @(
@{
SkuId = $e5Sku.SkuId
DisabledPlans = $disabledPlans
}
)
Set-MgUserLicense -UserId "belinda@litwareinc.com" -AddLicenses $addLicenses -RemoveLicenses @()
В этом примере обновляется пользователь с SPE_E5 (Microsoft 365 E5) и отключаются планы обслуживания Sway и Forms, оставляя существующие отключенные планы пользователя в их текущем состоянии:
$userLicense = Get-MgUserLicenseDetail -UserId "belinda@litwareinc.com"
$userDisabledPlans = $userLicense.ServicePlans | `
Where ProvisioningStatus -eq "Disabled" | `
Select -ExpandProperty ServicePlanId
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$newDisabledPlans = $e5Sku.ServicePlans | `
Where ServicePlanName -in ("SWAY", "FORMS_PLAN_E5") | `
Select -ExpandProperty ServicePlanId
$disabledPlans = ($userDisabledPlans + $newDisabledPlans) | Select -Unique
$addLicenses = @(
@{
SkuId = $e5Sku.SkuId
DisabledPlans = $disabledPlans
}
)
Set-MgUserLicense -UserId "belinda@litwareinc.com" -AddLicenses $addLicenses -RemoveLicenses @()
В этом примере обновляется пользователь с SPE_E5 (Microsoft 365 E5) и отключаются планы обслуживания Sway и Forms, оставляя существующие отключенные планы пользователя во всех остальных подписках в их текущем состоянии:
$userLicense = Get-MgUserLicenseDetail -UserId belinda@litwareinc.com
$userDisabledPlans = $userLicense.ServicePlans | Where-Object ProvisioningStatus -eq "Disabled" | Select -ExpandProperty ServicePlanId
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$newDisabledPlans = $e5Sku.ServicePlans | Where ServicePlanName -in ("SWAY", "FORMS_PLAN_E5") | Select -ExpandProperty ServicePlanId
$disabledPlans = ($userDisabledPlans + $newDisabledPlans) | Select -Unique
$result=@()
$allPlans = $e5Sku.ServicePlans | Select -ExpandProperty ServicePlanId
foreach($disabledPlan in $disabledPlans)
{
foreach($allPlan in $allPlans)
{
if($disabledPlan -eq $allPlan)
{
$property = @{
Disabled = $disabledPlan
}
}
}
$result += New-Object psobject -Property $property
}
$finalDisabled = $result | Select-Object -ExpandProperty Disabled
$addLicenses = @(
@{
SkuId = $e5Sku.SkuId
DisabledPlans = $finalDisabled
}
)
Set-MgUserLicense -UserId belinda@litwareinc.com -AddLicenses $addLicenses -RemoveLicenses @()
Назначение лицензий пользователю, скопировав назначение лицензии другого пользователя
В этом примере назначается jamesp@litwareinc.com тот же план лицензирования, который применяется к belindan@litwareinc.com:
$mgUser = Get-MgUser -UserId "belindan@litwareinc.com" -Property AssignedLicenses
Set-MgUserLicense -UserId "jamesp@litwareinc.com" -AddLicenses $mgUser.AssignedLicenses -RemoveLicenses @()
Перевод пользователя на другую подписку (план лицензирования)
В этом примере пользователь переходит с плана лицензирования SPE_E3 (Microsoft 365 E3) на план лицензирования SPE_E5 (Microsoft 365 E5):
$e3Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E3'
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
# Unassign E3
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{} -RemoveLicenses @($e3Sku.SkuId)
# Assign E5
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{SkuId = $e5Sku.SkuId} -RemoveLicenses @()
С помощью этой команды можно проверить изменение подписки для учетной записи пользователя.
Get-MgUserLicenseDetail -UserId "belindan@litwareinc.com"
См. также
Управление Microsoft 365 с помощью PowerShell
Управление Microsoft 365 с помощью PowerShell
Начало работы с пакетом SDK Microsoft Graph PowerShell
Использование API пользователя Microsoft Graph: assignLicense и subscribedSku