We have seen many changes to Office 365 but Office 365 Education changes even more as Microsoft given more free services to education establishment worldwide. Back in September 2015, Microsoft gave some of the E3 features to Office 365 and renamed the license from Office 365 E1 for Student (Faculty) to Office 365 Education for Student (Faculty), still free.
During the announcement around making the Office client available through Office 365, better known as Office 365 Pro Plus, Microsoft made it easy for students and teachers to get the software by asking for their email address and check their licensing records to then give them Office 365 Education.
You may have noticed this added over 1.5 million licenses to your tenant allowing you to change all your users to this new license. This license is now called the Office 365 Education PLUS for Student (Faculty) license.
So you now have the ability to give all your students and staff Office 365 Pro Plus as you have these licenses added to your tenant, but to assign them to each of your users is time consuming and you may already have disabled other plans such as Skype for Business. Something that can be time consuming.
The below script runs and checks to see what services are assigned to each user, removes the current license and then add the Plus license with the same disabled features as previous. It will also check to see if their currently have a faculty or student license and ensure the right one is licensed.
You will need the Azure AD PowerShell install to make this run and also connected to your tenant (Connect-MSOLService).
$users = Get-MsolUser -MaxResults 10000 | Select-Object -property UserPrincipalName -ExpandProperty Licenses foreach ($user in $users){ $UPN = $user.userprincipalname $useraccount = get-msoluser -UserPrincipalName $UPN $licensetype = $useraccount.Licenses.accountskuid $licensesassigned = $useraccount.Licenses.servicestatus write-host ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ write-host ~~~~ Now Starting on $UPN ~~~~ write-host "The following licenses are disabled on this account" $disabledPlans= @() foreach ($line in $licensesassigned) { if ($line.ServicePlan.ServiceName -eq "SWAY" -and $line.ProvisioningStatus -eq "Disabled") {Write-Host $line.ServicePlan.ServiceName "Disabled" -BackgroundColor DarkRed} if ($line.ServicePlan.ServiceName -eq "SHAREPOINTWAC_EDU" -and $line.ProvisioningStatus -eq "Disabled") {Write-Host $line.ServicePlan.ServiceName "Disabled" -BackgroundColor DarkRed} if ($line.ServicePlan.ServiceName -eq "MCOSTANDARD" -and $line.ProvisioningStatus -eq "Disabled") {Write-Host $line.ServicePlan.ServiceName "Disabled" -BackgroundColor DarkRed} if ($line.ServicePlan.ServiceName -eq "SHAREPOINTSTANDARD_EDU" -and $line.ProvisioningStatus -eq "Disabled") {Write-Host $line.ServicePlan.ServiceName "Disabled" -BackgroundColor DarkRed} if ($line.ServicePlan.ServiceName -eq "EXCHANGE_S_STANDARD" -and $line.ProvisioningStatus -eq "Disabled") {Write-Host $line.ServicePlan.ServiceName "Disabled" -BackgroundColor DarkRed} ############################################### if ($line.ServicePlan.ServiceName -eq "SWAY" -and $line.ProvisioningStatus -eq "Disabled") { $disabledPlans +="SWAY"} if ($line.ServicePlan.ServiceName -eq "SHAREPOINTWAC_EDU" -and $line.ProvisioningStatus -eq "Disabled") { $disabledPlans +="SHAREPOINTWAC_EDU"} if ($line.ServicePlan.ServiceName -eq "MCOSTANDARD" -and $line.ProvisioningStatus -eq "Disabled") { $disabledPlans +="MCOSTANDARD"} if ($line.ServicePlan.ServiceName -eq "SHAREPOINTSTANDARD_EDU" -and $line.ProvisioningStatus -eq "Disabled") { $disabledPlans +="SHAREPOINTSTANDARD_EDU"} if ($line.ServicePlan.ServiceName -eq "EXCHANGE_S_STANDARD" -and $line.ProvisioningStatus -eq "Disabled") {$disabledPlans +="EXCHANGE_S_STANDARD"} } Set-MsolUserLicense -UserPrincipalName $UPN -RemoveLicenses $licensetype if ($licensetype -like "*STUDENT*"){ write-host "This user has a student license" $FullFrictionFreeLicense = Get-MsolAccountSku | Where-Object {$_.AccountSKUID -like "*STANDARDWOFFPACK_IW_STUDENT*"} } if ($licensetype -like "*FACULTY*") { write-host "This user has a faculty license" $FullFrictionFreeLicense = Get-MsolAccountSku | Where-Object {$_.AccountSKUID -like "*STANDARDWOFFPACK_IW_FACULTY*"} } $License = New-MsolLicenseOptions -AccountSkuId $FullFrictionFreeLicense.AccountSkuId -DisabledPlans $disabledPlans; $info = Set-MsolUserLicense -UserPrincipalName $UPN -AddLicenses $FullFrictionFreeLicense.AccountSkuId -LicenseOptions $License ###test $testuseraccount = get-msoluser -UserPrincipalName $UPN $testlicensetype = $useraccount.Licenses.accountskuid if ($testlicensetype -like "*STANDARDWOFFPACK_IW*") { write-host "Success" -BackgroundColor DarkGreen} ELSE {write-host "FAILED" -BackgroundColor Red} write-host "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" write-host "" }