Permet de visualiser les License du tenant
  • PowerShell 93.8%
  • HTML 4.2%
  • Batchfile 2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
c.besson bb110506f0 Téléverser les fichiers vers "/"
Signed-off-by: c.besson <c.besson@adat-doubs.fr>
2026-08-19 10:27:25 +02:00
Exemples Téléverser les fichiers vers "/" 2026-08-19 10:27:25 +02:00
Logs Téléverser les fichiers vers "/" 2026-08-19 10:27:25 +02:00
ADAT-Microsoft365-License-Viewer.ps1 Téléverser les fichiers vers "/" 2026-08-19 10:27:25 +02:00
Catalogue-Licences.csv Téléverser les fichiers vers "/" 2026-08-19 10:27:25 +02:00
CHANGELOG.md Téléverser les fichiers vers "/" 2026-08-19 10:27:25 +02:00
Documentation-WikiJS.md Téléverser les fichiers vers "/" 2026-08-19 10:27:25 +02:00
Lancer-License-Viewer-Diagnostic.cmd Téléverser les fichiers vers "/" 2026-08-19 10:27:25 +02:00
Lancer-License-Viewer.cmd Téléverser les fichiers vers "/" 2026-08-19 10:27:25 +02:00
MANIFEST-SHA256.txt Téléverser les fichiers vers "/" 2026-08-19 10:27:25 +02:00
README.md Téléverser les fichiers vers "/" 2026-08-19 10:27:25 +02:00
Tester-Exports.cmd Téléverser les fichiers vers "/" 2026-08-19 10:27:25 +02:00
Tester-Syntaxe.ps1 Téléverser les fichiers vers "/" 2026-08-19 10:27:25 +02:00
TESTS.md Téléverser les fichiers vers "/" 2026-08-19 10:27:25 +02:00
VALIDATION.md Téléverser les fichiers vers "/" 2026-08-19 10:27:25 +02:00

ADAT Microsoft 365 License Viewer v0.3.1

Utilitaire Windows PowerShell/WinForms en lecture seule permettant de consulter, filtrer, sélectionner et exporter les licences Microsoft 365 retournées par Microsoft Graph.

La version 0.3.1 privilégie trois objectifs :

  1. une interface plus lisible et professionnelle ;
  2. une sélection exacte de plusieurs licences ;
  3. des rapports HTML et Markdown directement exploitables.

Nouveautés de la version 0.3.1

  • nouvelle interface avec en-tête, cartes de synthèse et tableau allégés ;
  • cinq indicateurs calculés sur la vue courante ;
  • sélection multiple des licences dans une fenêtre dédiée ;
  • sélection fondée sur le SkuPartNumber, et non uniquement sur un nom commercial ;
  • recherche dans la fenêtre de sélection ;
  • boutons Tout cocher et Tout décocher ;
  • recalcul immédiat des totaux après chaque sélection ou filtre ;
  • sélection multiple de lignes dans le tableau avec Ctrl ou Maj ;
  • représentation graphique du taux d'utilisation dans le tableau ;
  • export HTML autonome, responsive et imprimable ;
  • export Markdown compatible WikiJS et Joplin ;
  • conservation de l'export CSV UTF-8 avec BOM ;
  • possibilité d'exporter la vue filtrée ou uniquement les lignes sélectionnées dans le tableau.

Sécurité

L'application reste strictement en lecture seule.

Permission Microsoft Graph demandée :

LicenseAssignment.Read.All

Commandes Microsoft Graph utilisées :

Connect-MgGraph
Get-MgContext
Get-MgSubscribedSku -All
Disconnect-MgGraph

Aucune commande d'attribution, de retrait ou de modification de licence n'est présente.

L'application ne stocke :

  • aucun mot de passe ;
  • aucun jeton d'accès ;
  • aucun secret client ;
  • aucun certificat ;
  • aucune information d'authentification persistante.

Prérequis

  • Windows 10 ou Windows 11 ;
  • Windows PowerShell 5.1 minimum ;
  • PowerShell 7 possible sous Windows ;
  • accès HTTPS à Microsoft Entra ID et Microsoft Graph ;
  • compte autorisé à lire les informations de licences ;
  • droit d'installation des modules pour l'utilisateur courant.

Modules nécessaires :

Microsoft.Graph.Authentication
Microsoft.Graph.Identity.DirectoryManagement

Installation manuelle :

Install-Module Microsoft.Graph.Authentication -Scope CurrentUser -Force -AllowClobber
Install-Module Microsoft.Graph.Identity.DirectoryManagement -Scope CurrentUser -Force -AllowClobber

Accès au tenant

Rôle Microsoft Entra recommandé :

Lecteurs d'annuaire / Directory Readers

Le rôle suivant est également adapté :

Lecteur général / Global Reader

Il n'est pas nécessaire d'utiliser un compte Administrateur général pour la consultation courante.

Selon la politique de consentement du tenant, une approbation administrative peut être demandée lors de la première connexion.

Arborescence

ADAT-Microsoft365-License-Viewer-v0.3.1\
├── ADAT-Microsoft365-License-Viewer.ps1
├── Catalogue-Licences.csv
├── Lancer-License-Viewer.cmd
├── Lancer-License-Viewer-Diagnostic.cmd
├── Tester-Syntaxe.ps1
├── Tester-Exports.cmd
├── README.md
├── Documentation-WikiJS.md
├── TESTS.md
├── VALIDATION.md
├── CHANGELOG.md
├── MANIFEST-SHA256.txt
├── Exemples\
│   ├── README.md
│   ├── Rapport-Licences-Exemple.html
│   └── Rapport-Licences-Exemple.md
├── Logs\
└── Tests-Exports\  (créé lors de l’auto-test)

Lancement

Lancement normal :

Lancer-License-Viewer.cmd

Lancement recommandé pour un premier test :

Lancer-License-Viewer-Diagnostic.cmd

Le lanceur diagnostic :

  • conserve la console visible ;
  • vérifie la syntaxe du script ;
  • affiche les erreurs de démarrage ;
  • conserve le code retour.

Périmètre recommandé

Le filtre initial est :

Licences utilisateur actives avec capacité (recommandé)

Il correspond à :

AppliesTo = User
CapabilityStatus = Enabled
PrepaidUnits.Enabled > 0

Autres périmètres :

  • toutes les licences utilisateur ;
  • tous les produits actifs disposant d'une capacité ;
  • toutes les références retournées par Microsoft Graph.

Sélection exacte de plusieurs licences

Cliquer sur :

Choisir les licences...

La fenêtre affiche chaque produit sous la forme :

Microsoft 365 Business Premium  [SPB]
Exchange Online Plan 1  [EXCHANGESTANDARD]

Le SkuPartNumber entre crochets rend la sélection non ambiguë, même lorsque deux noms commerciaux se ressemblent.

Dans la fenêtre de sélection :

  1. rechercher un nom ou une référence ;
  2. cocher plusieurs licences ;
  3. utiliser Tout cocher ou Tout décocher si nécessaire ;
  4. cliquer sur Appliquer.

Les cartes et le tableau sont recalculés immédiatement.

Le bouton Aucune retire temporairement toutes les licences exactes de la vue. Le bouton Réinitialiser restaure la sélection complète et le périmètre recommandé.

Calculs

Pour chaque référence :

Unités activées    = PrepaidUnits.Enabled
Unités attribuées  = ConsumedUnits
Unités disponibles = Unités activées - Unités attribuées
Taux d'utilisation = Unités attribuées / Unités activées × 100

Les cinq cartes sont calculées uniquement sur les lignes affichées :

  • licences affichées ;
  • unités activées ;
  • unités attribuées ;
  • unités disponibles ;
  • taux d'utilisation global.

Le taux global est calculé à partir des sommes :

Somme des unités attribuées / somme des unités activées

Il ne s'agit pas de la moyenne des pourcentages de chaque produit.

Les produits restent indépendants. Les sommes globales donnent une vue de capacité, mais les unités de produits différents ne sont pas interchangeables.

Tableau

Le tableau est triable et accepte une sélection multiple de lignes.

Colonne Signification
Licence Nom commercial local, sinon SkuPartNumber
Famille Classement local du produit
Référence Microsoft SkuPartNumber exact
Cible User ou Company
Statut CapabilityStatus
Activées PrepaidUnits.Enabled
Attribuées ConsumedUnits
Disponibles Activées moins attribuées
Utilisation Pourcentage consommé et barre visuelle
État État calculé par l'application

Sélection de lignes :

  • clic simple : une ligne ;
  • Ctrl + clic : plusieurs lignes indépendantes ;
  • Maj + clic : une plage de lignes.

Recherche et filtres

La recherche multi-mots porte sur :

  • le nom commercial ;
  • la famille ;
  • le SkuPartNumber ;
  • la cible ;
  • le statut ;
  • l'état calculé.

Exemples :

business premium
exchange attention
power bi

Les filtres locaux ne déclenchent aucune nouvelle requête Microsoft Graph.

Exports

Cliquer sur :

Exporter le rapport...

Portée

Deux portées sont possibles :

  • Vue filtrée : toutes les lignes actuellement visibles ;
  • Lignes sélectionnées dans le tableau : uniquement les lignes choisies avec Ctrl ou Maj.

HTML autonome

Format recommandé pour l'envoi, l'archivage et l'impression.

Le rapport contient :

  • un en-tête avec le tenant, le compte et la date ;
  • cinq cartes de synthèse ;
  • le contexte des filtres ;
  • un tableau responsive ;
  • des badges d'état ;
  • des barres d'utilisation ;
  • une feuille de style intégrée ;
  • aucune dépendance Internet.

Le fichier peut être ouvert dans Edge, Chrome ou Firefox et imprimé en PDF depuis le navigateur.

Markdown

Le rapport Markdown est directement copiable dans :

  • WikiJS ;
  • Joplin ;
  • Forgejo ;
  • GitHub ou GitLab ;
  • un dépôt de documentation interne.

Il contient le contexte, la synthèse, le tableau des licences et la note expliquant que les produits ne sont pas interchangeables.

CSV

Le CSV détaillé reste disponible pour Excel ou un traitement automatisé.

Caractéristiques :

Séparateur : ;
Encodage   : UTF-8 avec BOM

Catalogue des noms

Le fichier :

Catalogue-Licences.csv

utilise le format :

SkuPartNumber;NomLicence

Une référence inconnue n'est jamais supprimée. Son SkuPartNumber est affiché comme nom de secours.

Journaux

Emplacement principal :

C:\ProgramData\ADAT\Microsoft365-License-Viewer\Logs

Emplacement de secours :

Logs\

Le journal ne contient aucun mot de passe, jeton ou secret.

Limites connues

  • Microsoft Graph subscribedSku ne fournit pas le prix ou la date contractuelle de renouvellement ;
  • le catalogue des noms commerciaux est local et doit être maintenu ;
  • les familles sont un classement local ;
  • les totaux additionnent des produits différents uniquement pour fournir une synthèse ;
  • la version 0.3.1 n'affiche pas encore la liste nominative des utilisateurs licenciés.

Désinstallation

  1. fermer l'application ;
  2. supprimer le dossier du projet ;
  3. supprimer éventuellement les journaux dans C:\ProgramData\ADAT\Microsoft365-License-Viewer ;
  4. conserver ou supprimer les modules Microsoft Graph selon les besoins des autres outils PowerShell.

🖥️ Affichage et mise à l’échelle Windows

La version 0.3.1 utilise des mises en page WinForms adaptatives. Les fenêtres principales, de sélection et d’export peuvent être redimensionnées. Les boutons conservent une hauteur minimale et leur texte doit rester visible avec une mise à l’échelle Windows de 100 %, 125 %, 150 % ou 175 %.

En cas d’affichage encore tronqué :

  1. maximiser la fenêtre principale ;
  2. agrandir la fenêtre concernée avec sa bordure ;
  3. vérifier Paramètres Windows > Système > Affichage > Mise à l’échelle ;
  4. relancer l’application après modification de l’échelle.

🔒 Informations présentes dans les exports

Les rapports HTML, Markdown et CSV n’affichent plus l’identifiant technique du tenant. Ils indiquent uniquement :

  • le domaine d’organisation déduit du compte connecté ;
  • le compte Microsoft utilisé ;
  • la date de génération ;
  • les filtres et la portée de l’export.

L’identifiant du tenant reste une donnée technique utilisée uniquement par la session Microsoft Graph et la journalisation de diagnostic.

🧪 Tester les exports sans accéder au tenant

Le fichier Tester-Exports.cmd lance un auto-test local avec deux licences entièrement fictives. Aucune connexion Microsoft Graph n’est effectuée.

Le test génère dans Tests-Exports :

Test-Rapport-Licences.html
Test-Rapport-Licences.md
Test-Rapport-Licences.csv

Cette vérification permet de confirmer sur le poste Windows que :

  • PowerShell 5.1 sait construire les trois formats ;
  • l’écriture UTF-8 avec BOM fonctionne ;
  • les fichiers sont créés et non vides ;
  • l’identifiant GUID du tenant n’apparaît pas dans les rapports.