If you assign licenses in Office 365, you’re essentially assigning license bundles. Each license usually consists of several sublicenses, like this:
In a case I ran into for a customer, the ‘Exchange Online’ component was sometimes not enabled for certain users. It took us a while to notice that the serviceplan of the main license had been unchecked. In Powershell, it would normally look like this:
Of course now we’d like to know which of our thousands of users did not have a EXCHANGE _S_STANDARD ServicePlan with a ProvisioningStatus of “Success” after the migration to Office 365.
So, I wrote the following Powershell snippet to determine which users did not have the specified plan enabled:
$users = Get-Msoluser -All $fouten = 0 foreach ($user in $users){ $heeftExchange = $False $staatAan = $False foreach($service in $user.Licenses.ServiceStatus){ if($service.ServicePlan.ServiceName -like "EXCHANGE*"){ $heeftExchange = $True if($Service.ProvisioningStatus -eq "Success"){ $staatAan = $True } } } if($heeftExchange -eq $False -or $staatAan -eq $False){ Write-Host "$($user.UserPrincipalName) does not have a service plan!" $fouten++ } } write-host "Errors: $fouten / $($users.Count)"