Skip to main content

License reports

Backed by Microsoft Graph with a cached SKU catalog. For full details and examples, run Get-Help <FunctionName> -Detailed.

Export-MsolAccountSku

Export all users with assigned licenses to CSV, mapping SKU part numbers to friendly names.

Syntax

Export-MsolAccountSku [-CsvFolder <String>] [-ForceLicenseCatalogRefresh]
ParameterDescriptionRequiredDefault
CsvFolderOutput folder.NoCurrent directory
ForceLicenseCatalogRefreshRedownload the license catalog cache.NoFalse

Example

Export-MsolAccountSku -CsvFolder 'C:\Temp\Reports'

Get-UserMsolAccountSku

Show licenses assigned to a single user with friendly names.

Syntax

Get-UserMsolAccountSku -UserPrincipalName <String> [-ForceLicenseCatalogRefresh]
ParameterDescriptionRequired
UserPrincipalNameTarget UPN or object ID.Yes
ForceLicenseCatalogRefreshRedownload license catalog cache.No

Example

Get-UserMsolAccountSku -UserPrincipalName 'user@contoso.com'

Get-TenantMsolAccountSku

List tenant SKUs with resolved names, totals, consumed, available, and seat states.

Syntax

Get-TenantMsolAccountSku [-ForceLicenseCatalogRefresh] [-AsTable] [-GridView]
ParameterDescriptionRequiredDefault
ForceLicenseCatalogRefreshRedownload license catalog cache.NoFalse
AsTableFormat output as a table.NoFalse
GridViewShow output in a GridView window.NoFalse

Example

Get-TenantMsolAccountSku -AsTable

Add-MsolAccountSku

Assign licenses by friendly name (resolved via catalog), SKU part number, or SKU ID to a user.

Syntax

Add-MsolAccountSku -UserPrincipalName <String> -License <String[]> [-ForceLicenseCatalogRefresh]
ParameterDescriptionRequired
UserPrincipalNameTarget user UPN or object ID.Yes
LicenseFriendly name, SKU part number, or SKU ID. Accepts multiple values.Yes
ForceLicenseCatalogRefreshRedownload license catalog cache.No

Examples

Add-MsolAccountSku -UserPrincipalName 'user@contoso.com' -License 'Microsoft 365 E3'
Add-MsolAccountSku -UserPrincipalName 'user@contoso.com' -License 'ENTERPRISEPACK','VISIOCLIENT'
Add-MsolAccountSku -UserPrincipalName 'user@contoso.com' -License '18181a46-0d4e-45cd-891e-60aabd171b4e'
note

If the target user has no UsageLocation, Nebula.Core sets it automatically using the UsageLocation key from your configuration (default US, override via %USERPROFILE%\.NebulaCore\settings.psd1). If updating the usage location fails, license assignment stops.

warning

If the tenant does not have units available for the requested license, the assignment is avoided and a warning message is displayed.

Move-MsolAccountSku

Move all licenses (with disabled plans preserved) from one user to another.

Syntax

Move-MsolAccountSku -SourceUserPrincipalName <String> -DestinationUserPrincipalName <String>
ParameterDescriptionRequired
SourceUserPrincipalNameSource user UPN or object ID.Yes
DestinationUserPrincipalNameDestination user UPN or object ID.Yes

Example

Move-MsolAccountSku -SourceUserPrincipalName 'user1@contoso.com' -DestinationUserPrincipalName 'user2@contoso.com'

Update-LicenseCatalog

Refresh the local license catalog cache (download SKU mappings).

Syntax

Update-LicenseCatalog [-Force]
ParameterDescription
ForceForce a refresh even if cache exists.

Example

Update-LicenseCatalog -Force

Questions and answers

Can I export licenses/mailboxes without Graph?

No. License functions and some statistics require Microsoft Graph for complete data. Ensure Connect-Nebula requested the right scopes.