/
/

Usare Microsoft Graph API con Windows PowerShell per monitorare e gestire i client Microsoft 365

di Team Ninja
Using Microsoft Graph API with Windows PowerShell to Monitor and Manage Microsoft 365 Clients blog banner image

Riepilogo

Questo post del blog NinjaOne offre un elenco completo di comandi CMD di base e un’analisi approfondita dei comandi di Windows con oltre 70 comandi cmd essenziali sia per i principianti che per gli utenti avanzati. La guida si propone si piegare in modo pratico i comandi del prompt dei comandi per la gestione dei file, la navigazione nelle directory, la risoluzione dei problemi di rete, le operazioni su disco e l’automazione, con esempi reali per migliorare la produttività. Che tu voglia imparare i comandi cmd fondamentali o padroneggiare gli strumenti avanzati della CLI di Windows, questa guida ti aiuterà a utilizzare il Prompt dei comandi in modo più efficace.

Punti chiave

  • Microsoft Graph API è un endpoint REST unificato che offre accesso programmatico ai servizi Microsoft 365, tra cui Intune, Microsoft Entra ID, Exchange Online e Teams.
  • Gli MSP e i team di enterprise informatica usano Microsoft Graph API per monitorare la conformità dei dispositivi, verificare l’utilizzo delle licenze, applicare policy in modo automatizzato, avviare flussi di lavoro di remediation attivati da avvisi e creare dashboard di reporting cross-tenant.
  • Prima di connetterti a Microsoft Graph PowerShell SDK ti servono un tenant Microsoft 365 con accesso come amministratore globale o amministratore delegato, l’SDK installato con PowerShell 5.1 o versione successiva e gli ambiti di autorizzazione adeguati alle operazioni che intendi eseguire.
  • Lo stato di conformità dei dispositivi, l’elenco dei dispositivi non conformi e i dettagli dei singoli dispositivi si possono recuperare con query Get-MgDeviceManagementManagedDevice; le azioni di blocco e cancellazione da remoto si attivano con i comandi Invoke-MgDeviceManagement.
  • Le policy distribuite tramite Microsoft Graph si possono verificare a livello di endpoint controllando HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\ nel Registro di sistema di Windows; lo stato di registrazione del dispositivo si verifica con dsregcmd /status.
  • I token di autenticazione di Microsoft Graph vanno protetti usando i criteri di gruppo locali per disattivare la memorizzazione delle credenziali e limitare l’esecuzione di PowerShell ai soli script firmati.

Microsoft Graph API è un endpoint unificato che offre agli amministratori l’accesso programmatico a diversi servizi Microsoft 365 – come Intune, Microsoft Entra (in precedenza Azure AD), Exchange Online, Teams e molto altro – tramite Windows PowerShell.

I casi d’uso sono numerosi, soprattutto negli ambienti enterprise. Microsoft Graph API può essere utilizzata per:

  • Monitorare la conformità e lo stato di salute dei dispositivi
  • Gestire l’utilizzo e l’assegnazione delle licenze
  • Gestire policy e gruppi in modo automatizzato
  • Creare flussi di lavoro di avviso e remediation
  • Generare report cross-tenant per le dashboard degli MSP

Prerequisiti:

  • Devi disporre di un tenant Microsoft 365 con accesso come amministratore globale o amministratore delegato.
  • Devi registrare Microsoft Graph in Microsoft Entra (in precedenza Azure AD).
  • Per alcune azioni potrebbero servirti le licenze Intune e Microsoft Entra Premium.
  • Ti servirà una baseline GPO per proteggere i token di autenticazione e garantire l’esecuzione sicura degli script.

Per una panoramica visiva rapida, guarda la nostra video guida: Usare Microsoft Graph API con Windows PowerShell per monitorare e gestire i client Microsoft 365.

Come installare Microsoft Graph PowerShell SDK

Prerequisiti:

  • È consigliabile usare Windows PowerShell 7 o versione successiva. Windows PowerShell 5.1 è il requisito minimo. (Verifica la tua versione di PowerShell )
  • Devi avere installato .NET Framework 4.7.2 o versione successiva.
  • PowerShellGet deve essere aggiornato all’ultima versione. Per farlo, digita Install-Module PowerShellGet in Windows PowerShell e premi Invio.
  • I criteri di esecuzione devono essere impostati su remote signed o su un valore meno restrittivo. Per verificare di avere i criteri corretti, digita Get-ExecutionPolicy in Windows PowerShell e premi Invio. Per impostare i criteri di esecuzione su remote signed, digita Set-ExecutionPolicy -ExecutionPolicy RemoteSigned e premi Invio.

Passaggi:

  1. Apri il menu Start e cerca Windows PowerShell.
  2. Fai clic con il tasto destro su Windows PowerShell > Esegui come amministratore.
  3. Digita Install-Module Microsoft.Graph -Scope CurrentUser -Repository PSGallery -Force e premi Invio.

Nota: questa modifica si applica solo al profilo utente corrente. Se vuoi installare Microsoft Graph PowerShell SDK su tutti i profili utente, cambia -Scope in AllUsers.

  1. Conferma l’installazione quando richiesto.

Come connettersi a Microsoft Graph PowerShell SDK

  1. Digita Connect-MgGraph -Scopes "User.Read.All",”DeviceManagementManagedDevices.Read.All”,”Directory.Read.All” in Windows PowerShell e premi Invio per connetterti.

Nota: in questo modo ottieni l’accesso all’intero Graph. Puoi modificare le autorizzazioni in base alle tue esigenze cambiando quelle indicate dopo -Scopes. Per consultare tutte le autorizzazioni disponibili, digita Find-MgGraphCommand -command Get-MgGroup.

  1. Se hai già effettuato l’accesso, passa al punto successivo. In caso contrario, segui le istruzioni per accedere.
  2. Puoi anche usare Get-MgContext per recuperare dettagli specifici, come Client ID, tenant ID, ambiti autorizzati e altro ancora.

Nota: puoi usare -TenantID per l’accesso multi-tenant e -ClientID per le applicazioni registrate.

Come recuperare le informazioni sui dispositivi e lo stato di conformità

Per elencare tutti i dispositivi gestiti da Intune, digita questo comando e premi Invio:

Get-MgDeviceManagementManagedDevice |
Select DisplayName, ComplianceState, OperatingSystem

Se all’interno di quell’elenco vuoi individuare i dispositivi non conformi, digita questo comando e premi Invio:

Get-MgDeviceManagementManagedDevice |
Where-Object {$_.ComplianceState -ne “compliant”}

Puoi anche individuare dispositivi specifici cercandoli per nome:

Get-MgDeviceManagementManagedDevice -ManagedDeviceId <GUID>

Sostituisci <GUID> con l’ID del dispositivo che stai cercando.

Come monitorare l’attività degli utenti e le licenze

Per elencare tutti gli utenti con i rispettivi dettagli sulle licenze, digita questo comando e premi Invio:

Get-MgUser | Select-Object DisplayName, UserPrincipalName, AssignedLicenses

Per individuare gli utenti senza licenza, digita questo comando e premi Invio:

Get-MgUser | Where-Object { !$_.AssignedLicenses }
Recupero dell’attività di accesso (richiede AuditLog.Read.All):
Get-MgAuditLogSignIn -Top 50 | Select UserDisplayName, UserPrincipalName, Status, AppDisplayName

Come automatizzare la remediation e l’applicazione delle policy

Se un dispositivo viene smarrito o compromesso, puoi cancellarne i dati da Microsoft Graph digitando questo comando e premendo Invio:

Invoke-MgDeviceManagementManagedDeviceWipe -ManagedDeviceId <GUID>

Sostituisci <GUID> con l’ID del dispositivo smarrito o compromesso.

Se vuoi bloccare un dispositivo da remoto:

Invoke-MgDeviceManagementManagedDeviceRemoteLock -ManagedDeviceId <GUID>

Sostituisci <GUID> con l’ID del dispositivo smarrito o compromesso.

Se vuoi assegnare una policy di conformità, digita questo comando e premi Invio:

New-MgDeviceManagementCompliancePolicyAssignment -CompliancePolicyId <PolicyID> -Target @{ “@odata.type” = “#microsoft.graph.groupAssignmentTarget”; “groupId” = “<EntraGroupId>” }

Sostituisci <PolicyID> con l’ID della policy che vuoi assegnare. Sostituisci <EntraGroupId> con il gruppo a cui vuoi assegnare la policy.

Questi comandi sono utili se vuoi impostare una remediation automatizzata su ambienti diversi. Puoi anche attivarli automaticamente quando il tuo sistema riceve un avviso dallo strumento di gestione degli endpoint.

Come verificare le policy a livello di endpoint (Registro di sistema di Windows, CMD)

Puoi verificare se le policy applicate tramite Microsoft Graph sono andate a buon fine controllando il Registro di sistema di Windows.

Ad esempio, puoi aprire HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\ nel Registro di sistema di Windows e controllare se le policy sono state applicate (ad esempio Defender, policy di crittografia).

Puoi anche usare il Prompt dei comandi per registrare il dispositivo in un MDM e monitorarne ulteriormente lo stato.

  1. Apri il Prompt dei comandi come amministratore.
  2. Digita questo comando e premi Invio: start ms-device-enrollment:?mode=mdm

Per verificare lo stato di aggiunta/registrazione, digita: dsregcmd /status

Come proteggere l’uso dei token con i criteri di gruppo locali e i controlli sugli endpoint

Puoi usare i criteri di gruppo locali per proteggere i token di autenticazione di Microsoft Graph e l’automazione PowerShell sui dispositivi gestiti seguendo questi passaggi:

  1. Apri l’Editor Criteri di gruppo locali.
  2. Vai a Configurazione del computer > Impostazioni di Windows > Impostazioni sicurezza > Criteri locali > Opzioni di sicurezza
  3. Individua Non consentire la memorizzazione di password e credenziali per l’autenticazione di rete e fai doppio clic.
  4. Imposta su Abilitato.
  5. Fai clic su Applica > OK.
  6. Vai a Configurazione del computer > Modelli amministrativi > Componenti di Windows > Windows PowerShell.
  7. Individua Attiva esecuzione script e fai doppio clic.
  8. Imposta su Abilitato.
  9. Apri il menu a discesa e seleziona Consenti solo script firmati.
  10. Fai clic su Applica > OK.

Altri aspetti da considerare nell’uso di Microsoft Graph API

  • Puoi usare Graph Explorer per testare l’API online senza installarla sui tuoi dispositivi.
  • Assicurati di applicare le autorizzazioni a livello di applicazione per i processi in background e gli script multi-tenant.
  • Puoi applicare limiti di frequenza e logiche di ripetizione agli script in produzione.
  • Puoi usare le policy di accesso condizionale di Microsoft Entra ID per limitare l’uso di Graph sui dispositivi non gestiti.

Risoluzione dei problemi di Microsoft Graph API

ProblemaCause possibiliSoluzioni
Microsoft Graph non funziona.Mancano alcune autorizzazioni: il tenant non è abilitato a eseguire quel comando.Assegna al tenant le autorizzazioni adeguate. In alternativa, puoi usare un account amministratore con autorizzazioni complete.
Il dispositivo non compare nella query.Significa che il dispositivo non è gestito in Intune oppure non è sincronizzato correttamente.Controlla la registrazione in Microsoft Endpoint Management (MEM) e lo stato del dispositivo in Microsoft Entra (in precedenza AAD).
Hai raggiunto il limite di frequenza dell’API.Ci sono troppe query simultanee.Usa il comando -Top e il batching.
Mancano i valori di registro relativi a una policy specifica.La policy non è stata applicata.Verifica il targeting dei gruppi e avvia una sincronizzazione per applicare la modifica al dispositivo.

I servizi NinjaOne

NinjaOne integra Microsoft Graph API in diversi modi:

Monitora i dispositivi gestiti con Microsoft Graph API

Microsoft Graph API è uno strumento potente che offre agli amministratori un controllo centralizzato e automatizzato degli account Microsoft 365 della propria organizzazione tramite Windows PowerShell. Dopo averla installata e dopo esserti connesso con PowerShell, puoi usarla per monitorare gli utenti e la conformità dei dispositivi e per automatizzare azioni sui dispositivi e assegnazioni di policy.

Puoi verificare queste assegnazioni di policy controllando il Registro di sistema di Windows e usando il Prompt dei comandi. Puoi inoltre potenziare i tuoi flussi di lavoro con le funzionalità di automazione e visibilità di NinjaOne.

Articoli correlati:

Guida rapida

Le funzionalità di NinjaOne con Microsoft Graph API e Windows PowerShell:

Integrazione con Microsoft Graph API

NinjaOne supporta l’integrazione con Microsoft Graph API e PowerShell, in particolare per:

  1. Service Principal Authentication (SPA):
    • NinjaOne offre la Service Principal Authentication per i backup di Microsoft 365
    • Richiede un amministratore globale durante la configurazione iniziale
    • Supporta vari ambiti e autorizzazioni per i diversi servizi Microsoft 365
  2. Integrazione con PowerShell:
    • NinjaOne mette a disposizione moduli e script PowerShell per interagire con l’API
    • Supporta il flusso di autorizzazione OAuth 2.0
    • Offre script di esempio per automatizzare attività come:
      • Gestione delle vulnerabilità
      • Generazione dei token
      • Gestione delle richieste API

Aspetti principali

  • L’integrazione consente di monitorare e gestire i client Microsoft 365
  • Supporta operazioni come:
    • Backup e ripristino
    • Gestione degli utenti
    • Recupero delle informazioni sui dispositivi
    • Autorizzazione e gestione dei token

FAQs

Microsoft Graph API (tramite Microsoft Graph PowerShell SDK) è l’interfaccia attuale e unificata per tutti i servizi Microsoft 365 e offre accesso a Intune, Entra ID, Exchange Online, Teams e SharePoint attraverso un’unica API coerente. Azure AD PowerShell (i moduli AzureAD e MSOnline) era l’approccio legacy, limitato alla gestione di identità e directory. Tutti gli script e le automazioni che usano i moduli AzureAD o MSOnline devono essere migrati agli equivalenti del Graph SDK prima che smettano di funzionare nel tuo tenant.

Gli ambiti di autorizzazione minimi necessari per la gestione dei dispositivi Intune tramite Microsoft Graph sono DeviceManagementManagedDevices.Read.All per i dati di sola lettura su conformità e stato, DeviceManagementManagedDevices.ReadWrite.All per le azioni da remoto (cancellazione, blocco) e DeviceManagementConfiguration.ReadWrite.All per creare e assegnare policy di conformità. Per le query su utenti e licenze serve User.Read.All, mentre per accedere ai log di controllo degli accessi è necessario concedere AuditLog.Read.All.

Sì. Puoi usare il parametro -TenantId in Connect-MgGraph per specificare il tenant di un cliente, oppure registrare un’applicazione multi-tenant in Microsoft Entra ID a cui i clienti concedono esplicitamente il consenso tramite un URL di consenso amministratore. Le piattaforme RMM come NinjaOne possono inoltre automatizzare l’esecuzione degli script Microsoft Graph su tutti i tenant gestiti contemporaneamente, eliminando i passaggi manuali di connessione per ciascun cliente.

Microsoft Graph PowerShell SDK incapsula l’API REST di Microsoft Graph in cmdlet PowerShell. L’SDK gestisce automaticamente autenticazione, aggiornamento dei token, paginazione e gestione degli errori, risultando molto più semplice da usare per gli amministratori IT e gli MSP.

Quando superi il limite di frequenza delle Graph API, l’API restituisce una risposta 429 Too Many Requests con un’intestazione Retry-After che indica quanto tempo attendere. Negli script in produzione, implementa una logica di ripetizione che intercetti le risposte 429, legga il valore di Retry-After, attenda il tempo indicato e ripeta la richiesta. Per le operazioni in blocco, usa il parametro -Top per limitare la dimensione dei set di risultati, utilizza la Batch API di Microsoft Graph (endpoint $batch) per combinare più richieste in un’unica chiamata e distribuisci nel tempo le pianificazioni degli script sui vari tenant, così da evitare che vengano eseguiti tutti insieme.

Ti potrebbe interessare anche

Pronto a semplificare le parti più complesse dell'IT?