Automatizzare l’inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API

di Raffaele Chiatto | Mag 28, 2026 | 0 commenti

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

 

Chiunque abbia mai gestito un tenant Microsoft 365 con qualche centinaio di utenti conosce bene la sensazione: aprire l’interfaccia di amministrazione, navigare tra pannelli e sottomenu e cercare di capire (in tempi ragionevoli) chi ha quale licenza, quante ne sono state assegnate e quante restano disponibili.

Un’operazione all’apparenza banale che ripetuta ogni mese o ogni volta che arriva una richiesta dall’ufficio acquisti diventa rapidamente una fonte di frustrazione silenziosa.

Il problema non è la complessità tecnica in sé ma la mancanza di automazione. Il portale di amministrazione è pensato per operazioni puntuali non per estrarre dati strutturati in modo ripetibile e affidabile.

Esportare manualmente un elenco di utenti con le relative assegnazioni di licenze significa tempo sprecato, rischio di errori e soprattutto un processo che non scala.

È qui che entra in gioco Microsoft Graph API: un’interfaccia unificata e potente che consente di interrogare l’intero ecosistema Microsoft 365 a livello programmatico ottenendo in pochi secondi le stesse informazioni che il portale restituisce in molti clic.

Con le giuste chiamate API è possibile costruire un inventario completo e aggiornato di tutti gli utenti del tenant corredato delle SKU di licenza assegnate dei service plan attivi e dello stato di ogni sottoscrizione.

In questo articolo vedremo come automatizzare l’intero processo dall’autenticazione tramite un’applicazione registrata su Azure Active Directory fino alla generazione di un export strutturato e pronto per essere analizzato o integrato nei propri strumenti di reporting.

Niente più copia-incolla dal portale: solo dati, script e un inventario sempre aggiornato con un singolo comando.

 

PREREQUISITI

Sul PC da cui si eseguirà lo script:

  • Windows con PowerShell 5.1 o superiore (già incluso in Windows 10/11)
  • Connessione internet
  • Modulo Microsoft.Graph installato

Su Azure / Microsoft 365:

  • Accesso al portale Azure (portal.azure.com) con un account Global Admin o Application Admin
  • Un’App Registration creata in Azure AD con:
    • Le permission di tipo Application (non Delegated) per User.Read.All, Directory.Read.All e Organization.Read.All
    • L’Admin Consent concesso per tutte e tre le permission
    • Un Client Secret generato e copiato
    • I tre valori disponibili: Tenant ID, Client ID e Client Secret

Permessi minimi sull’account che crea l’App Registration:

  • Ruolo Global Administrator oppure Application Administrator nel tenant M365

CREAZIONE E CONFIGURAZIONE DELL’APP SUL TENANT AZURE

Richiamare da un qualsiasi browser portal.azure.com

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Cercare App Registration

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Cliccare su New Registration

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Dare un nome all’App (Es: ExportLicense) quindi cliccare su Register

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Copiare l’Application (client) ID e il Directory (tenant) ID

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Cliccare su Add a certificate or secret

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Cliccare su Certificates & Secrets quindi New Client Secret

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Inserire la Descrizione e la Scadenza quindi cliccare al fondo della pagina Add

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Copiare il Value della Secret

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Cliccare su API Permissions quindi Add a Permissions

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Selezionare Microsoft Graph

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Cliccare su Application Permissions

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Cercare il valore User.Read.All quindi selezionarlo

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Cercare il valore Directory.Read.All quindi selezionarlo

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Cercare il valore Organization.Read.Al quindi selezionarlo

Al fondo della pagina cliccare su Add Permissions

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Da questa schermata è possibile notare che le permissions non sono state Consentite da Admin

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Cliccare su Grant Admin Consent quindi accertiarsi che tutte le permissions abbiano lo stato Granted col bollino verde

 

INSTALLAZIONE DEL MODULO MICROSOFT GRAPH

Per poter utilizzare lo script è necessario installare il modulo Microsoft.Graph dalla gallery ufficiale di Microsoft (PowerShell Gallery) con il comando:

In pratica senza questo comando i cmdlet come Connect-MgGraph, Get-MgUser, Get-MgSubscribedSku non esisterebbero in PowerShell e lo script non potrebbe girare.

💡 Si tratta di un’operazione sicura e ufficiale: il modulo è pubblicato e mantenuto direttamente da Microsoft. Scarica circa 200 MB di file nella cartella profilo dell’utente (C:\Users\tuonomeutente\Documents\PowerShell\Modules), senza modificare file di sistema.

⚠️ Potrebbero volerci anche 10/15 minuti al termine dell’installazione. Non chiudere o bloccare la finestra Powershell

 

SCRIPT PER IL REPERIMENTO DELLE SKU DEL TENANT

La prima cosa da fare è eseguire uno script rapido che interroga il tuo tenant e restituisce tutte le SKU con il loro codice tecnico da aggiungere allo script successivo.

Lo script fa due cose:

Mostra una tabella con tutte le SKU (codice, GUID, totali, usate)

Genera automaticamente il blocco $skuNames pronto da copiare in Export-M365Licenses.ps1 con i codici tecnici come placeholder — dovrai solo sostituire il valore a destra con il nome leggibile che preferisci per quelle SKU che non riconosci.

Di seguito il listato dello script Powershell:

Salvare il file col nome Get-TenantSKUs.ps1

Sostituire le seguenti righe con i codici presi in precedenza:

$TenantId = “INSERISCI-IL-TUO-TENANT-ID”
$ClientId = “INSERISCI-IL-TUO-CLIENT-ID”
$ClientSecret = “INSERISCI-IL-TUO-CLIENT-SECRET”

⚠️ Il secret è visibile solo al momento della creazione. Se non l’hai copiato, dovrai eliminarlo e crearne uno nuovo.

 

COPIA DELLE SKU NELLO SCRIPT

Di seguito un output che potremmo vedere dopo aver eseguito il Powershell Get-TenantSKUs.ps1:

A questo punto prima di copiare le SKU nello script modificarle mettendo a destra dell’uguale una descrizione parlante del software:

 

SCRIPT CHE ESPORTA LE LICENZE CON LE RELATIVE UTENZE ASSEGNATARIE

Di seguito lo script PowerShell che usa Microsoft Graph per estrarre tutte le licenze del tenant con gli utenti associati e li esporta in CSV (apribile direttamente in Excel).

E’ possibile eseguire lo script nelle due modalità di seguito:

Il File CSV contiene:

Nome Utente / UPN: Identità dell’utente
Account Abilitato: Se l’account è attivo
Reparto / Mansione: Info organizzative
Licenza / Codice SKU: Nome leggibile e codice tecnico
Company Name: Azienda
Totali / Consumate / Disponibili: Contatori per ogni SKU nel tenant

Una riga per ogni combinazione utente–licenza: se un utente ha 3 licenze, avrà 3 righe. Così è possibile filtrare e pivotare facilmente in Excel.

Di seguito lo script Powershell:

 

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

Se tutto è andato a buon fine dovremmo vedere una schermata come quella dell’immagine sovrastante

ANALISI DEL FILE CSV

Nel file CSV trovi una riga per ogni combinazione utente-licenza. Le colonne sono:

Nome Utente: Mario Rossi
UPN: [email protected]
Account Abilitato: True / False
Azienda: Società 1
Reparto: IT
Mansione: System Administrator
Paese Utilizzo: IT
Licenza: Microsoft 365 E3
Codice SKU: ENTERPRISEPACK
Totali Tenant: 50
Consumate: 43
Disponibili: 7

Di seguito uno screenshot del file excel

Automatizzare l'inventario delle licenze Microsoft 365: export utenti e assegnazioni con Microsoft Graph API - Raffaele Chiatto

 

 

Articoli Recenti

Veeam Backup

Monitoring

Friends

  • My English Lab  English School
  • ChrSystem   Servizi ICT
  • Since 01  Kreative Graphics

Database

Networking

Autori

  • Raffaele Chiatto  Amministratore
  • Marco Valle  Autore
  • Angelo Lauria  Autore
  • Edoardo Prot  Autore
  • Davide D'Urso  Autore
Raffaele Chiatto

Raffaele Chiatto

Sono Raffaele Chiatto, un appassionato di informatica a 360 gradi.
Tutto è iniziato nel 1996, quando ho scoperto il mondo dell'informatica grazie a Windows 95, e da quel momento non ho più smesso di esplorare e imparare.
Ogni giorno mi dedico con curiosità e passione a scoprire le nuove frontiere di questo settore in continua evoluzione.

Related Post

0 Commenti

Invia Un Commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Virtualizzazione

Linux

Microsoft

Apple

Backup

Database

Security

Automazione