使用 PowerShell 修改 O365 服务计划

使用 PowerShell 修改 O365 服务计划

对于 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,那么相同的命令就可以正常运行,不会出现问题。

我当前的解决方法是从用户中删除许可证,然后在启用更新的计划的情况下将其重新添加。

我希望有人曾经遇到过这个问题并找到了适当的解决方案。

答案1

好吧,我是个白痴。我浏览了 GUI 并尝试添加 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
    }
}

我能够毫无问题地修改许可证。

答案2

您也可以尝试使用Azure 门户用于许可证管理(Azure Active Directory - 许可证)。它支持将许可证分配给用户组。因此,您只需对包含所有用户的某个组进行一次分配。当包含新用户时,您无需进行任何分配。

相关内容