Add or Remove Office 365 License using Powershell

We can use the Azure AD Powershell cmdlet Set-MsolUserLicense to manage Office 365 license for a user. You can add a new license, remove an existing license and update existing license features (enable or disable license sub features) using this cmdlet.
 

Summary:

Add New License to Office 365 User

To add a new license, we need to get AccountSkuId for the particular license, you can list all the available licenses and its AccountSkuId by running the following command.

Note: Before proceed, Install and Configure Azure AD PowerShell

Get-MsolAccountSku | Select AccountSkuId,ActiveUnits,ConsumedUnits

You can also get the list of all the available service plans in a particular license by using below command:

Get-MsolAccountSku | Where-Object {$_.AccountSkuId -eq 'mts:O365_BUSINESS_PREMIUM'} |
ForEach-Object {$_.ServiceStatus}

Next, we need to set Usage Location for the user. This is required for every individual user. If you are re-assigning the license, the usage location is not mandatory. We have to use the Azure AD powershell cmdlet Set-MsolUser to set usage location.

Set-MsolUser -UserPrincipalName '[email protected]' -UsageLocation "US"

Now, we can assign the new license by using below powershell command.

Set-MsolUserLicense -UserPrincipalName '[email protected]' -AddLicenses 'mts:O365_BUSINESS_PREMIUM'

To add multiple licenses, you have to pass AccountSkuId of all the licenses as comma (,) separated values.

Set-MsolUserLicense -UserPrincipalName '[email protected]' -AddLicenses mts:O365_BUSINESS_PREMIUM,mts:AAD_PREMIUM

Add License with certain features

While adding new license to an user, we can enable or disable only particular set of sub components of a new license. we have to use the powershell cmdlet New-MsolLicenseOptions with the option -DisabledPlans to set license features that we want to disable (or remove) from new license.

$options = New-MsolLicenseOptions -AccountSkuId 'mts:O365_BUSINESS_PREMIUM' -DisabledPlans OFFICE_BUSINESS,MCOSTANDARD

Now, we can pass this license options to Set-MsolUserLicense cmdlet using the paramater –LicenseOptions.

Set-MsolUserLicense -UserPrincipalName '[email protected]' –AddLicenses 'mts:O365_BUSINESS_PREMIUM' -LicenseOptions $options

Note: There is no option EnabledPlans like DisabledPlans, so we can’t set only required features in straightforward way, we can achieve this only by excluding non-required features by using DisabledPlans option.

Update Features in existing License (Enable and Disable sub feature)

If you want to update or disable license features in existing license, you have to set only LicenseOptions in Set-MsolUserLicense cmdlet (exclude the parameter –AddLicenses).

$options = New-MsolLicenseOptions -AccountSkuId 'mts:O365_BUSINESS_PREMIUM' -DisabledPlans OFFICE_BUSINESS,MCOSTANDARD
Set-MsolUserLicense -UserPrincipalName '[email protected]' -LicenseOptions $options

Re-Assigning License of an Office 365 User

We can easily re-assign or replace new license by removing old license by using single command. The below powershell command remove the license mts:O365_BUSINESS_PREMIUM from the user morgan and add the license mts:ENTERPRISEPACK.

Set-MsolUserLicense -UserPrincipalName '[email protected]' -AddLicenses 'mts:ENTERPRISEPACK' -RemoveLicenses 'mts:O365_BUSINESS_PREMIUM'

Remove Licenses from Office 365 User

We can easily remove an existing license from an user by passing the license’s AccountSkuId to the parameter –RemoveLicenses in Set-MsolUserLicense cmdlet.

Set-MsolUserLicense -UserPrincipalName '[email protected]' –RemoveLicenses 'mts:O365_BUSINESS_PREMIUM'

To remove multiple licenses, you have to give AccountSkuId of all the licenses as comma (,) separated values.

Find and Export User License Details

We can find and get the applied license details of all the office 365 users by using the Azure AD powershell cmdlet Get-MsolUser. The Get-MsolUser cmdlet returns the user’s license details and applied license sub features (enabled license plans).

$users = Get-MsolUser | Where-Object { $_.IsLicensed }
$users | Foreach-Object{ 
  $licenseDetail = '' 
  $licenses='' 
  if($_.licenses -ne $null) {
ForEach ($license in $_.licenses){
  switch -wildcard ($($license.Accountskuid.tostring())) { 
           '*POWER_BI_STANDALONE' { $licName = 'POWER BI STANDALONE' } 
           '*CRMSTANDARD' { $licName = 'CRM Online' }
           '*O365_BUSINESS_PREMIUM' { $licName = 'Office 365 BUSINESS PREMIUM' } 
           '*ENTERPRISEPACK' { $licName = 'Office 365 (Plan E3)' }  
           default { $licName = $license.Accountskuid.tostring() }
        }         

  if($licenses){  $licenses = ($licenses + ',' + $licName) } else { $licenses = $licName}
ForEach ($row in $($license.servicestatus)) {

if($row.ProvisioningStatus -ne 'Disabled') {          
       switch -wildcard ($($row.ServicePlan.servicename)) { 
           'EXC*' { $thisLicence = 'Exchange Online' }  
           'LYN*' { $thisLicence = 'Skype for Business' }
           'SHA*' { $thisLicence = 'Sharepoint Online' }       
           default { $thisLicence = $row.ServicePlan.servicename }  
       }         
 if($licenseDetail){ $licenseDetail = ($licenseDetail + ',' + $thisLicence) }  Else { $licenseDetail = $thisLicence}}
}}}
New-Object -TypeName PSObject -Property @{    
    UserName=$_.DisplayName   
    Licenses=$licenses 
    LicenseDetails=$licenseDetail }
}  | Select UserName,Licenses,LicenseDetails |
Export-CSV "C:\Office-365-User-License-Report.csv" -NoTypeInformation -Encoding UTF8

Explore the app Office 365 Manager to manage licenses from a user-friendly interface. You can assign, remove, and update licenses for individual and bulk users. Also, view and manage the licenses that are applied through security groups.

Office 365 License Management tool »


Advertisement

Leave a Comment