/
/

Utiliser Microsoft Graph API avec Windows PowerShell pour surveiller et gérer les clients Microsoft 365

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

Microsoft Graph API est un terminal unifié qui donne aux administrateurs un accès programmatique à différents services Microsoft 365, comme Intune, Microsoft Entra (anciennement Azure AD), Exchange Online, Teams et bien d’autres, via Windows PowerShell.

Ses cas d’usage sont nombreux, en particulier dans les environnements de grandes entreprises. Microsoft Graph API permet notamment de gérer :

  • la conformité et la surveillance de l’état de santé des appareils
  • l’utilisation et l’attribution des licences
  • la gestion automatisée des politiques et des groupes
  • les workflows d’alerte et de remédiation
  • le reporting inter-tenants pour les tableaux de bord MSP

📌 Prérequis :

  • Vous devez disposer d’un tenant Microsoft 365 avec un accès administrateur général ou administrateur délégué.
  • Vous devrez enregistrer Microsoft Graph auprès de Microsoft Entra (anciennement Azure AD).
  • Des licences Intune et Microsoft Entra Premium peuvent être nécessaires pour certaines actions.
  • Vous aurez besoin d’une référence de configuration GPO pour protéger vos jetons d’authentification et garantir la sécurité de l’exécution de vos scripts.

📌 Stratégies de déploiement recommandées :

Cliquez pour choisir une méthode

💻
Idéal pour les utilisateurs individuels
💻💻💻
Idéal pour les grandes entreprises
Installer le SDK Microsoft Graph PowerShell✓
Se connecter au SDK Microsoft Graph PowerShell✓
Récupérer les informations sur les appareils et leur état de conformité✓
Surveiller l’activité des utilisateurs et les licences✓
Automatiser la remédiation et l’application des politiques✓
Valider les politiques au niveau du terminal (registre Windows, CMD)✓
Sécuriser l’utilisation des jetons avec les GPO et les contrôles sur les terminaux✓

Comment installer le SDK Microsoft Graph PowerShell

📌Prérequis :

  • Il est recommandé d’utiliser Windows PowerShell 7 ou une version ultérieure. Windows PowerShell 5.1 constitue la configuration minimale requise. (Vérifiez votre version de PowerShell )
  • .NET Framework 4.7.2 ou une version ultérieure doit être installé.
  • PowerShellGet doit être mis à jour vers la dernière version. Pour cela, tapez Install-Module PowerShellGet dans Windows PowerShell et appuyez sur Entrée.
  • La politique d’exécution doit être définie sur remote signed ou sur un niveau moins restrictif. Pour vérifier que vous avez la bonne politique, tapez Get-ExecutionPolicy dans Windows PowerShell et appuyez sur Entrée. Pour passer la politique d’exécution en remote signed, tapez Set-ExecutionPolicy -ExecutionPolicy RemoteSigned, puis appuyez sur Entrée.

Étapes :

  1. Ouvrez le menu Démarrer et recherchez Windows PowerShell.
  2. Faites un clic droit sur Windows PowerShell > Exécuter en tant qu’administrateur.
  3. Tapez Install-Module Microsoft.Graph -Scope CurrentUser -Repository PSGallery -Force et appuyez sur Entrée.

💡Remarque : cette modification ne s’appliquera qu’au profil utilisateur actuel. Si vous souhaitez installer le SDK Microsoft Graph PowerShell sur tous les profils utilisateur, remplacez -Scope par AllUsers.

  1. Confirmez l’installation lorsque vous y êtes invité.

Comment se connecter au SDK Microsoft Graph PowerShell

  1. Tapez Connect-MgGraph -Scopes « User.Read.All », »DeviceManagementManagedDevices.Read.All », »Directory.Read.All » dans Windows PowerShell et appuyez sur Entrée pour vous connecter.

💡Remarque : cela vous donne accès à l’ensemble de Graph. Vous pouvez adapter les autorisations à vos besoins en modifiant celles indiquées après -Scopes. Pour consulter toutes les autorisations disponibles, tapez Find-MgGraphCommand -command Get-MgGroup.

  1. Si vous êtes déjà connecté, passez à l’étape suivante. Sinon, suivez les instructions pour vous connecter.
  2. Vous pouvez également utiliser Get-MgContext pour récupérer des informations précises, comme l’ID client, l’ID de tenant, les portées autorisées, etc.

💡Remarque : vous pouvez utiliser -TenantID pour un accès multi-tenant et -ClientID pour les applications enregistrées.

Comment récupérer les informations sur les appareils et leur état de conformité

Pour lister tous vos appareils gérés par Intune, tapez cette commande et appuyez sur Entrée :

Get-MgDeviceManagementManagedDevice |
Select DisplayName, ComplianceState, OperatingSystem

Pour repérer les appareils non conformes dans cette liste, tapez cette commande et appuyez sur Entrée :

Get-MgDeviceManagementManagedDevice |
Where-Object {$_.ComplianceState -ne « compliant »}

Vous pouvez aussi rechercher un appareil précis par son nom :

Get-MgDeviceManagementManagedDevice -ManagedDeviceId <GUID>

Remplacez <GUID> par l’ID de l’appareil recherché.

Comment surveiller l’activité des utilisateurs et les licences

Pour lister tous les utilisateurs avec le détail de leurs licences, tapez cette commande et appuyez sur Entrée :

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

Pour identifier les utilisateurs sans licence, tapez cette commande et appuyez sur Entrée :

Get-MgUser | Where-Object { !$_.AssignedLicenses }
Récupérer l’activité de connexion (nécessite AuditLog.Read.All) :
Get-MgAuditLogSignIn -Top 50 | Select UserDisplayName, UserPrincipalName, Status, AppDisplayName

Comment automatiser la remédiation et l’application des politiques

Si un appareil est perdu ou compromis, vous pouvez effacer ses données depuis Microsoft Graph en tapant cette commande et en appuyant sur Entrée :

Invoke-MgDeviceManagementManagedDeviceWipe -ManagedDeviceId <GUID>

Remplacez <GUID> par l’ID de l’appareil perdu ou compromis.

Pour verrouiller un appareil à distance :

Invoke-MgDeviceManagementManagedDeviceRemoteLock -ManagedDeviceId <GUID>

Remplacez <GUID> par l’ID de l’appareil perdu ou compromis.

Pour attribuer une politique de conformité, tapez cette commande et appuyez sur Entrée :

New-MgDeviceManagementCompliancePolicyAssignment -CompliancePolicyId <PolicyID> -Target @{ « @odata.type » = « #microsoft.graph.groupAssignmentTarget » ; « groupId » = « <AADGroupId> » }

Remplacez <PolicyID> par l’ID de la politique que vous voulez attribuer. Remplacez <AADGroupId> par le groupe auquel vous souhaitez l’attribuer.

Ces commandes sont utiles si vous voulez mettre en place une remédiation automatisée sur différents environnements. Vous pouvez aussi les déclencher automatiquement lorsque votre système reçoit une alerte de votre outil de gestion des terminaux.

Comment valider les politiques au niveau du terminal (registre Windows, CMD)

Vous pouvez vérifier que les politiques émises via Microsoft Graph ont bien été appliquées en consultant le registre Windows.

Par exemple, rendez-vous dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\ dans votre registre Windows pour vérifier si les politiques ont été appliquées (par exemple Defender ou une politique de chiffrement).

Vous pouvez également utiliser l’invite de commande pour inscrire l’appareil dans un MDM et suivre son état de plus près.

  1. Ouvrez l’invite de commande en tant qu’administrateur.
  2. Tapez ceci et appuyez sur Entrée : start ms-device-enrollment : ?mode=mdm

Pour vérifier l’état de la jonction ou de l’inscription, tapez : dsregcmd /status

Comment sécuriser l’utilisation des jetons avec les stratégies de groupe locales et les contrôles sur les terminaux

Les stratégies de groupe locales vous permettent de protéger les jetons d’authentification Microsoft Graph et l’automatisation PowerShell sur vos appareils gérés. Voici la marche à suivre :

  1. Ouvrez l’ éditeur d’objets de stratégie de groupe.
  2. Accédez à Configuration ordinateur > Paramètres Windows > Paramètres de sécurité > Stratégies locales > Options de sécurité
  3. Repérez Ne pas autoriser le stockage de mots de passe et d’identifiants pour l’authentification réseau et double-cliquez dessus.
  4. Définissez le paramètre sur Activé.
  5. Cliquez sur Appliquer > OK.
  6. Accédez à Configuration ordinateur > Modèles d’administration > Composants Windows > Windows PowerShell.
  7. Repérez Activer l’exécution de scripts et double-cliquez dessus.
  8. Définissez le paramètre sur Activé.
  9. Ouvrez le menu déroulant et sélectionnez Autoriser uniquement les scripts signés.
  10. Cliquez sur Appliquer > OK.

Points supplémentaires à prendre en compte avec Microsoft Graph API

  • Vous pouvez utiliser Graph Explorer pour tester l’API en ligne sans l’installer sur vos appareils.
  • Pensez à appliquer des autorisations d’application pour les tâches en arrière-plan et les scripts multi-tenant.
  • Vous pouvez mettre en place une limitation du débit et une logique de nouvelle tentative pour les scripts en production.
  • Vous pouvez recourir aux politiques d’accès conditionnel de Microsoft Entra ID pour restreindre l’usage de Graph sur les appareils non gérés.

Résolution des problèmes liés à Microsoft Graph API

ProblèmeCauses possiblesSolutions
Microsoft Graph échoue.Il manque des autorisations : le tenant n’est pas autorisé à exécuter cette commande.Accordez les autorisations nécessaires à ce tenant. Vous pouvez également utiliser un compte administrateur disposant de toutes les autorisations.
L’appareil n’apparaît pas dans la requête.L’appareil n’est pas géré dans Intune, ou il n’est pas correctement synchronisé.Vérifiez l’inscription dans Microsoft Endpoint Management (MEM) et l’état de l’appareil dans Microsoft Entra (anciennement AAD).
Vous atteignez la limite de débit de l’API.Trop de requêtes simultanées sont envoyées.Utilisez la commande -Top et le traitement par lots.
Les valeurs de registre d’une politique donnée sont absentes.La politique n’a pas été appliquée.Vérifiez le ciblage des groupes et déclenchez une synchronisation pour appliquer la modification à l’appareil.

Les services NinjaOne

NinjaOne complète Microsoft Graph API de plusieurs façons :

Surveillez vos appareils gérés avec Microsoft Graph API

Microsoft Graph API est un outil puissant qui offre aux administrateurs un contrôle centralisé et automatisé des comptes Microsoft 365 de leur entreprise via Windows PowerShell. Une fois l’outil installé et la connexion établie avec PowerShell, vous pouvez surveiller les utilisateurs et la conformité des appareils, puis automatiser les actions sur les appareils et l’attribution des politiques.

Vous pouvez valider ces attributions de politiques en consultant le registre Windows et en utilisant l’invite de commande. Les fonctionnalités d’automatisation et de visibilité de NinjaOne vous permettent en outre d’enrichir vos workflows.

Articles connexes :

Guide de démarrage rapide

Les capacités de NinjaOne avec Microsoft Graph API et Windows PowerShell :

Intégration de Microsoft Graph API

NinjaOne prend bien en charge l’intégration avec Microsoft Graph API et PowerShell, en particulier pour :

  1. l’authentification par principal de service (SPA) :
    • NinjaOne propose l’authentification par principal de service pour les sauvegardes Microsoft 365
    • Un administrateur général est nécessaire lors de la configuration initiale
    • Prise en charge de différentes portées et autorisations pour les divers services Microsoft 365
  2. l’intégration PowerShell :
    • NinjaOne fournit des modules et des scripts PowerShell pour interagir avec l’API
    • Prise en charge du flux d’autorisation OAuth 2.0
    • Des exemples de scripts sont proposés pour automatiser des tâches telles que :
      • la gestion des vulnérabilités
      • la génération de jetons
      • le traitement des requêtes API

Points clés à retenir

  • L’intégration permet de surveiller et de gérer les clients Microsoft 365
  • Elle prend en charge des opérations telles que :
    • la sauvegarde et la restauration
    • la gestion des utilisateurs
    • la récupération des informations sur les appareils
    • la gestion des autorisations et des jetons

You might also like

Prêt à simplifier les aspects les plus complexes de l'informatique et de la sécurité ?