Entra / Microsoft 365 · Licensing
Check Copilot license details
Check the details of the Microsoft 365 Copilot license assigned to a user account and report same.
Connect & set up
Run these once per session. All scopes are read-only unless the script makes changes.
Connect-MgGraph -NoWelcome -Scopes User.Read.All
Run it
The main script. Copy it, or download the .ps1 and run it from your console.
Connect-MgGraph -NoWelcome -Scopes User.Read.All# Microsoft 365 Copilot SKU is the first value, the second SKU is for is a trial Copilot license.[array]$CopilotSKU = '639dec6b-bb19-468b-871c-c5c441c4b0cb', 'ea2d19f9-23bc-4f7f-9c12-a677b26a8e2a'$CopilotStudioPlan = 'fe6c28b3-d468-44ea-bbd0-a10a5167435c'$CopilotSharePointPlan = '0aedf20c-091d-420b-aadf-30c042609612'$CopilotGraphConnectorsPlan = '82d30987-df9b-4486-b146-198b21d164c7'$CopilotConnectorsPlan = '89f1c4c8-0878-40f7-804d-869c9128ab5d'$CopilotProductivityAppsPlan = 'a62f8878-de10-42f3-b68f-6149a25ceb97'$CopilotTeamsPlan = 'b95945de-b3bd-46db-8437-f2beb6ea2347'$CopilotChatPlan = '3f30311c-6b1e-48a4-ab79-725b469da960'$CopilotIntelligentSearchPlan = '931e4a88-a67f-48b5-814f-16a5f1e6028d'$User = Read-Host "Enter the UPN of the user to check"Try {$UserDetails = Get-MgUser -UserId $User -ErrorAction Stop -Property AssignedLicenses, assignedPlans, DisplayName, UserPrincipalName, Id}Catch {Write-Host ("Error retrieving user {0}: $_") -f $UserBreak}Clear-HostWrite-Host "Checking Microsoft 365 Copilot license details for user: $User"# Check if the user has a Copilot license assigned$CopilotAssigned = $falseForEach ($Sku in $CopilotSKU) {if ($UserDetails.AssignedLicenses.SkuId -contains $Sku) {$CopilotAssigned = $true$CopilotSku = $Skubreak}}If ($CopilotAssigned) {Write-Host ("✔️ {0} has a valid Microsoft 365 Copilot license assigned." -f $User)[int]$FeatureCount = 0} else {Write-Host ("❌ {0} does not have the Microsoft 365 Copilot license assigned." -f $User)Break}# Check individual service plans to make sure that they are enabled[array]$ServicePlans = Get-MgUserLicenseDetail -User $UserDetails.Id | Where-Object {$_.SkuId -eq $SKU} | Select-Object -ExpandProperty ServicePlansIf ($ServicePlans | Where-Object { $_.ServicePlanId -eq $CopilotStudioPlan -and $_.ProvisioningStatus -eq 'Success' }) {Write-Host ("✔️ Copilot Studio is enabled for {0}." -f $User)$FeatureCount++} else {Write-Host ("❌ User {0} does not have the Copilot Studio plan assigned." -f $User)}If ($ServicePlans | Where-Object { $_.ServicePlanId -eq $CopilotSharePointPlan -and $_.ProvisioningStatus -eq 'Success' }) {Write-Host ("✔️ Copilot for SharePoint is enabled for {0}." -f $User)$FeatureCount++} else {Write-Host ("❌ User {0} does not have the Copilot for SharePoint plan assigned." -f $User)}If ($ServicePlans | Where-Object { $_.ServicePlanId -eq $CopilotGraphConnectorsPlan -and $_.ProvisioningStatus -eq 'Success' }) {Write-Host ("✔️ Copilot Graph Connectors is enabled for {0}." -f $User)$FeatureCount++} else {Write-Host ("❌ User {0} does not have the Copilot Graph Connectors plan assigned." -f $User)}If ($ServicePlans | Where-Object { $_.ServicePlanId -eq $CopilotConnectorsPlan -and $_.ProvisioningStatus -eq 'Success' }) {Write-Host ("✔️ Copilot Power Platform Connectors is enabled for {0}." -f $User)$FeatureCount++} else {Write-Host ("User {0} does not have the Copilot Power Platform Connectors plan assigned." -f $User)}If ($ServicePlans | Where-Object { $_.ServicePlanId -eq $CopilotProductivityAppsPlan -and $_.ProvisioningStatus -eq 'Success' }) {Write-Host ("✔️ Copilot in Productivity Apps (Office) is enabled for {0}." -f $User)$FeatureCount++} else {Write-Host ("❌ User {0} does not have the Copilot in Productivity Apps plan assigned." -f $User)}If ($ServicePlans | Where-Object { $_.ServicePlanId -eq $CopilotTeamsPlan -and $_.ProvisioningStatus -eq 'Success' }) {Write-Host ("✔️ Copilot for Teams is enabled for {0}." -f $User)$FeatureCount++} else {Write-Host ("❌ User {0} does not have the Copilot for Teams plan assigned." -f $User)}If ($ServicePlans | Where-Object { $_.ServicePlanId -eq $CopilotChatPlan -and $_.ProvisioningStatus -eq 'Success' }) {Write-Host ("✔️ Copilot with Graph-grounded Chat is enabled for {0}." -f $User)$FeatureCount++} else {Write-Host ("❌ User {0} does not have the Copilot with Graph-grounded Chat plan assigned." -f $User)}If ($ServicePlans | Where-Object { $_.ServicePlanId -eq $CopilotIntelligentSearchPlan -and $_.ProvisioningStatus -eq 'Success' }) {Write-Host ("✔️ Copilot with Intelligent Search is enabled for {0}." -f $User)$FeatureCount++} else {Write-Host ("❌ User {0} does not have the Copilot with Intelligent Search plan assigned." -f $User)}Write-Host ""Write-Host ("Microsoft 365 Copilot features enabled for {0}: {1} of 8" -f $User, $FeatureCount) -ForegroundColor Yellow
Attribution
Author
Office365itpros