Изменение плана обслуживания O365 с помощью PowerShell

Для развертывания Office 365 мы не хотели предоставлять всем нашим пользователям доступ ко всем доступным приложениям / планам. Поэтому мы включили только Exchange и Skype.

Сейчас мы находимся в точке, где мы хотим включить Yammer и Office в сети, и у нас возникают проблемы.

$LicSKU = "<Hidden>:STANDARDPACK"
$ServicePlans = ((Get-MsolAccountSku | Where-Object {$_.AccountSkuId -eq $LicSKU}).ServiceStatus | Select-Object ServicePlan -ExpandProperty ServicePlan).ServiceName
$EnabledPlans = 'EXCHANGE_S_STANDARD','YAMMER_ENTERPRISE', 'SHAREPOINTWAC', 'MCOSTANDARD'
$DisabledPlans = @()
foreach($Plan in $ServicePlans) {
    if($EnabledPlans -notcontains $Plan) {
        $DisabledPlans += $Plan
    }
}
$LicOption = New-MsolLicenseOptions -AccountSkuId $LicSKU -DisabledPlans $DisabledPlans
try {
    $UserLicense = @{
        UserPrincipalName = $UserPrincipalName
        AddLicenses = $LicSKU
        LicenseOptions = $LicOption
    }
    Set-MsolUserLicense @UserLicense -ErrorAction Stop
}
catch [Microsoft.Online.Administration.Automation.MicrosoftOnlineException] {
    $UserLicense.Remove('AddLicenses')
    Set-MsolUserLicense @UserLicense -ErrorAction Stop
}

Я получаю следующую ошибку:

Set-MsolUserLicense : Unable to assign this license.
+         Set-MsolUserLicense @UserLicense -ErrorAction Stop
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [Set-MsolUserLicense], MicrosoftOnlineException
    + FullyQualifiedErrorId : Microsoft.Online.Administration.Automation.InvalidLicenseConfigurationException,Microsof
   t.Online.Administration.Automation.SetUserLicense

Если я установлю $DisablePlans = $null, то же команда работает без проблем.

Моя текущая работа заключается в том, чтобы удалить лицензию у пользователя, а затем снова добавить ее с включенными обновленными планами.

Я надеюсь, что кто-то сталкивался с этой проблемой раньше и нашел правильное решение для этого.

2 ответа

Решение

Ну, я идиот. Я просмотрел графический интерфейс пользователя и попытался добавить Office Online, и он пожаловался, что ему также требуется Sharepoint.

Поэтому, когда я обновил код

$ServicePlans = ((Get-MsolAccountSku | Where-Object {$_.AccountSkuId -eq $LicSKU}).ServiceStatus | Select-Object ServicePlan -ExpandProperty ServicePlan).ServiceName
$EnabledPlans = 'EXCHANGE_S_STANDARD','YAMMER_ENTERPRISE', 'MCOSTANDARD', 'SHAREPOINTSTANDARD', 'SHAREPOINTWAC'
$DisabledPlans = @()
foreach($Plan in $ServicePlans) {
    if($EnabledPlans -notcontains $Plan) {
        $DisabledPlans += $Plan
    }
}

Я смог изменить лицензию без проблем.

Вы также можете попробовать использовать Azure Portal для управления лицензиями (Azure Active Directory - Лицензии). Он поддерживает назначение лицензий группам пользователей. Таким образом, вам нужно будет выполнить назначение только один раз для некоторой группы, которая включает всех пользователей. И вам никогда не понадобится выполнять какое-либо задание, когда в него включены новые пользователи.

Другие вопросы по тегам