Une des premières étapes quand on souhaite effectuer une analyse Finops de ses licences cloud Microsoft est déjà d’exporer les licences dont on dispose ainsi que le nombre rééllement utilisées. Je vous mets à disposiion ce un script PowerShell qui exporte les licences Microsoft 365 (abonnements souscrits) avec tous les détails disponibles via la cmdlet Get-MgSubscribedSku. Ce script utilise le module Microsoft Graph PowerShell pour récupérer les informations, y compris les propriétés nested comme les unités prépayées (PrepaidUnits) et les plans de service (ServicePlans). Pour gérer ces propriétés nested dans un CSV, le script les convertit en chaînes lisibles (JSON pour PrepaidUnits et liste séparée par virgule pour ServicePlans).
Prérequis :
- Installez le module Microsoft Graph si ce n’est pas déjà fait :
Install-Module -Name Microsoft.Graph -Scope CurrentUser - Exécutez le script avec un compte administrateur ayant les permissions nécessaires (par exemple, Organization.Read.All ou LicenseAssignment.Read.All).
- Connectez-vous à Microsoft Graph avant d’exécuter le script principal :
Connect-MgGraph -Scopes "Organization.Read.All"
Script PowerShell :
PowerShell
# Connexion à Microsoft Graph (exécutez ceci une fois par session)
Connect-MgGraph -Scopes "Organization.Read.All"
# Récupération de toutes les licences souscrites avec toutes les propriétés
$skus = Get-MgSubscribedSku -All -Property * | ForEach-Object {
# Conversion des propriétés nested pour l'export CSV
$servicePlans = if ($_.ServicePlans) { ($_.ServicePlans | ForEach-Object { $_.ServicePlanName }) -join ", " } else { "" }
$prepaidUnits = if ($_.PrepaidUnits) { $_.PrepaidUnits | ConvertTo-Json -Compress } else { "" }
[PSCustomObject]@{
SkuId = $_.SkuId
SkuPartNumber = $_.SkuPartNumber
CapabilityStatus = $_.CapabilityStatus
ConsumedUnits = $_.ConsumedUnits
PrepaidUnitsJson = $prepaidUnits
ServicePlans = $servicePlans
AppliesTo = $_.AppliesTo
Id = $_.Id
}
}
# Export vers un fichier CSV en UTF-8 avec séparateur ";"
$skus | Export-Csv -Path "C:\Scripts\LicencesM365.csv" -Encoding UTF8 -Delimiter ";" -NoTypeInformation
Write-Host "Export terminé vers C:\Scripts\LicencesM365.csv"
Explications :
- La cmdlet Get-MgSubscribedSku récupère les abonnements (SKUs) avec des détails comme l’ID du SKU, le nom (SkuPartNumber), les unités consommées, les unités prépayées, les plans de service, etc.
- L’option -All assure la récupération de tous les éléments si paginés.
- Les propriétés nested sont aplaties pour un CSV propre : ServicePlans devient une liste séparée par virgule, et PrepaidUnits un JSON compact.
- L’export utilise -Encoding UTF8 pour l’UTF-8 et -Delimiter « ; » pour le séparateur point-virgule. Modifiez le chemin du fichier (-Path) selon vos besoins.
- Si vous voulez plus de propriétés ou une personnalisation, ajustez l’objet [PSCustomObject] dans la boucle.
- Il faut changer le répertoire c:\script ou modifier le script pour être prompté du nom de fichier et du répertoire de destination.

Le SkuId est l’ID interne de Microsoft qui permet de faire correspondre une licence cloud Microsoft avec la produit correspondant. Cela n’a rien avoir avec le SKU que l’on peut retrouver en tant que CSP dans la liste des prix Microsoft. Le SkuPartNumber est le nom interne de la licence Microsoft qui est souvent explicite même si pour certaines cela n’est pas trivial. Enfin le servicePlans contient tous les sous produits constituant la licence.
Exécutez-le dans PowerShell 7+ pour une meilleure compatibilité. Si vous rencontrez des erreurs (par exemple, permissions), vérifiez votre connexion ou les scopes. Vous pouvez aussi me laisser en commentaire le message d’erreur que vous obtenez.

Expert Microsoft 365 j’aide nos clients à optimiser leurs coûts de leur cher, très chère licences Microsoft Cloud et particulièrement Microsoft 365. N’hésitez pas à me contacter si vous aussi vous souhaitez optimiser vos dépenses liées aux licences. J’essaie de maintenir ce site à jour sur mon temps libre (quand il m’en reste) pour aider la communauté sur les licences cloud Microsoft qui ne sont toujours simples à comprendre. Avec un profil technique, MVP Allumnin, je conseille aux mieux nos clients sur le bon niveau de licence Microsoft en fonction de leurs usages.