Get Office 365 users licenses

Note:
Remember to install MSOnline module before running script.

#Provide directory path and prefix for output files
$LogDirectory = "c:\Temp\"
$LogFileName = "Office_365_License_"
 
if(!(Test-Path $LogDirectory))
{
    Write-Host "Provided directory was not found, directory will be created now..."
    New-Item -Path $LogDirectory -ItemType Directory
}
 
Import-Module MSOnline
Connect-MsolService
 
Write-Host "Connecting to Office 365..."
 
# Get a list of all licences available for tenant and gahter users which have license assigned
$LicenseTypes = Get-MsolAccountSku | Where {$_.ConsumedUnits -ge 1}
$Users = Get-MsolUser -All| Where-Object {$_.isLicensed -eq "True"}
 
foreach ($license in $LicenseTypes) 
{   
 
    Write-Host "Gathering users with license " $LicenseName -ForegroundColor Green
     
    $AccountsArray = @()
    $LicenseName = $license.AccountSkuId
    $FileLicenseName = $license.accountskuid.Replace(':','')
         
    # Gather accounts which have specific license assigned
    $Accounts = $Users | Where-Object {$_.licenses.accountskuid -contains $LicenseName}
 
    foreach ($Account in $Accounts) {
         
        $thislicense = $Account.licenses | Where-Object {$_.accountskuid -eq $LicenseName}
        $Properties =  @{
         "UserPrincipalName" = $Account.UserPrincipalName
         "DisplayName" = $Account.DisplayName
         "AccountSku" = $LicenseName
        }
         
        foreach ($row in $($thislicense.servicestatus)) {
             
            $Properties.Add($row.ServicePlan.ServiceName,$row.ProvisioningStatus)
         
        }
         
        $AccountArrayRow = New-Object PSObject -Property $Properties
        $AccountsArray += $AccountArrayRow
    }
     
    $FileName = ($LogDirectory+$LogFileName+$FileLicenseName)
    $AccountsArray | Export-CSV -Path $FileName'.csv' -NoTypeInformation
     
    Write-Host "Export to file for license $LicenseName completed" -ForegroundColor Green
}           
 
Write-Host ("Output files available under " + $LogDirectory) -ForegroundColor Green

 

Leave a Reply

Your email address will not be published. Required fields are marked *