Points clés
- PowerShell permet de centraliser la collecte des rapports d’activité des utilisateurs Microsoft 365 sur Exchange Online, Teams, SharePoint et OneDrive.
- Le module Microsoft Graph PowerShell et Get-MgUser fournissent des données plus riches et unifiées, et simplifient le suivi de l’inventaire et de l’utilisation.
- L’intégration de Graph Reports et des métriques de boîtes aux lettres Exchange Online aux inventaires d’utilisateurs facilite le reporting d’activité des utilisateurs Microsoft à des fins de gouvernance, d’audit et d’optimisation des licences.
- La normalisation et l’automatisation des exports garantissent des rapports utilisateur Microsoft 365 standardisés et prêts pour l’audit, sur l’ensemble de vos tenants.
- Une automatisation sécurisée, avec authentification application seule, logique de nouvelle tentative et journalisation, permet des workflows PowerShell fiables, évolutifs et sans surveillance.
- NinjaOne enrichit le reporting utilisateur Microsoft 365 grâce au déploiement de scripts à distance, à la planification, au stockage sécurisé des identifiants et à l’automatisation centralisée.
Les rapports d’activité des utilisateurs Microsoft 365 (anciennement Office 365) sont essentiels pour suivre l’utilisation des services, garantir la productivité des clients et assurer la sécurité et la conformité. PowerShell permet d’adopter une approche unifiée pour recueillir des informations exploitables sur Exchange Online, Teams, SharePoint et OneDrive.
Recueillir les rapports d’activité des utilisateurs Microsoft avec PowerShell
Microsoft Graph PowerShell offre des données de grande qualité et de puissantes capacités de filtrage. Avec PowerShell, vous pouvez réunir l’inventaire des utilisateurs, les données d’utilisation et les métriques de boîtes aux lettres dans un pipeline centralisé, ce qui facilite l’optimisation des licences, l’application de la gouvernance des accès et les enquêtes sur incidents.
📌 Prérequis :
- PowerShell 7 ou version ultérieure, avec les modules Microsoft Graph et Exchange Online installés
- Une inscription d’application Azure avec des étendues Graph au moindre privilège, telles que Group.Read.All et Reports.Read.All, ainsi que le consentement associé
- Facultatif : autorisations Exchange Online pour les statistiques de boîtes aux lettres
- Un stockage sécurisé des identifiants et un chemin de sortie centralisé pour les fichiers CSV et JSON
Étape n° 1 : inventorier les utilisateurs avec le module Microsoft Graph PowerShell
Un inventaire complet des utilisateurs constitue la base de la surveillance et de la gestion des clients Microsoft 365. Le script ci-dessous ne récupère que les informations utilisateur les plus pertinentes, ce qui réduit la durée d’exécution et préserve l’efficacité du processus à grande échelle.
En conservant un format d’export CSV identique d’un tenant à l’autre, chaque rapport suit la même structure. Les rapports sont ainsi faciles à comparer, à fusionner et à enrichir par la suite avec des données issues d’autres sources, comme Microsoft Graph Reports ou Exchange Online.
Exemple de script PowerShell d’inventaire des utilisateurs
Install-Module Microsoft.Graph -Scope CurrentUserImport-Module Microsoft.GraphConnect-MgGraph -Scopes "User.Read.All","Reports.Read.All"Get-MgUser -All -Property "id,displayName,userPrincipalName,mail,accountEnabled,createdDateTime,assignedLicenses" |Select-Object id,displayName,userPrincipalName,mail,accountEnabled,createdDateTime, @{n='LicenseCount';e={$_.assignedLicenses.Count}} |Export-Csv "C:\Reports\M365_Users.csv" -NoTypeInformation |
💡 Conseil : vous pouvez omettre certaines propriétés de la ligne Get-MGUser -All -Propertypour limiter la portée de votre requête.
Étape n° 2 : ajouter des métriques d’utilisation avec l’API Graph Reports
Graph Reports fournit des informations détaillées sur l’activité des utilisateurs dans les différents services Microsoft 365. Vous repérez ainsi les comptes dormants et les zones où l’utilisation se concentre, ce qui vous aide à déterminer où déprovisionner et où faire une mise à niveau des licences.
Exemples de scripts PowerShell pour l’API Graph Reports
Le script suivant récupère l’activité au niveau des utilisateurs sur différentes charges de travail pendant une période donnée.
Get-MgReportOffice365ActiveUserDetail -Date (Get-Date).AddDays(-1) -OutFile "C:\Reports\ActiveUserDetail.csv" |
Notez que le script ci-dessus demande les données de la veille, indiquées par .AddDays (-1). Vous pouvez aussi opter pour des périodes glissantes comme celles ci-dessous :
# Last 7 daysGet-MgReportOffice365ActiveUserDetail -Period D7 -OutFile "C:\Reports\ActiveUserDetail_D7.csv"# Last 30 daysGet-MgReportOffice365ActiveUserDetail -Period D30 -OutFile "C:\Reports\ActiveUserDetail_D30.csv" |
Ensuite, vous pouvez joindre le fichier CSV généré à votre liste d’inventaire de l’étape n° 1 afin d’identifier les comptes inactifs ou peu actifs par charge de travail :
$inv = Import-Csv "C:\Reports\M365_Users.csv" # From step 1$usage = Import-Csv "C:\Reports\ActiveUserDetail.csv" # From step 2$joined = $inv | Join-Object -On userPrincipalName -Right $usage -Kind Left # or use a custom hash join# Alternative without a module: build a hash on UPN for the usage file and add the fields you need$joined | Export-Csv "C:\Reports\M365_Users_Usage.csv" -NoTypeInformation |
Étape n° 3 : enrichir l’inventaire des utilisateurs avec les métriques de boîtes aux lettres Exchange Online
L’ajout des métriques de boîtes aux lettres à votre inventaire permet de repérer les boîtes trop volumineuses ou en croissance rapide avant qu’elles nuisent à la productivité des clients. De plus, cela garantit une bonne tenue des comptes et des politiques clients, tout en aidant les administrateurs à migrer les boîtes aux lettres Exchange Online sans difficulté.
Exemple de script PowerShell pour interroger les métriques Exchange Online
Le script suivant vous connecte au service Exchange Online de Microsoft 365 et récupère les principales métriques de boîte aux lettres pour chaque utilisateur. Les administrateurs comprennent ainsi l’utilisation des boîtes aux lettres grâce à des indicateurs clés : taille de la boîte, nombre d’éléments, éléments supprimés, date de dernière connexion et limites de stockage.
Connect-ExchangeOnline -UserPrincipalName [email protected]Get-MailboxStatistics -Identity [email protected] |
Exécutez le script pour les utilisateurs qui répondent aux critères suivants :
- Croissance rapide de la boîte aux lettres
- Boîtes aux lettres volumineuses ou proches du quota
- Boîtes aux lettres VIP, partagées ou de ressources
- Candidats à une migration
- Utilisateurs soumis à des exigences de conformité
Étape n° 4 : normaliser, exporter et stocker les rapports d’activité des utilisateurs Microsoft 365
Après avoir extrait les métriques avec Get-MgUser, Graph Reports et Exchange Online, celles-ci ne s’alignent pas d’emblée. La normalisation produit des exports standardisés, avec un format de données cohérent qui simplifie l’automatisation et favorise la reproductibilité d’un tenant à l’autre.
Plan d’action recommandé :
- Normalisez les noms de propriétés et ajoutez des champs calculés, comme LicenseCount, IsEnabled et AsOf, afin que les jeux de données se joignent proprement.
- Exportez les résultats en CSV pour les opérateurs et en JSON pour les tableaux de bord et l’automatisation.
- Nommez chaque fichier avec son ID de tenant, sa fenêtre temporelle et la version du script pour une meilleure auditabilité. Par exemple :
- users_{TenantId}_{Window}_{ScriptVersion}.csv
- users_{TenantId}_{Window}_{ScriptVersion}.json
Étape n° 5 : automatiser les workflows avec une authentification sécurisée et une journalisation
En associant normalisation et automatisation, vous pouvez reproduire les mêmes workflows sur l’ensemble de vos tenants. Des connexions sécurisées permettent à vos scripts de s’exécuter sans surveillance et selon un calendrier défini.
L’automatisation des mécanismes de nouvelle tentative et de temporisation garantit la stabilité des tâches, même lorsque Microsoft 365 limite les requêtes. La journalisation structurée, de son côté, démontre l’efficacité de votre script puisqu’elle enregistre ce qui a été exécuté et les métriques produites.
Plan d’action recommandé :
- Utilisez l’authentification application seule pour que les scripts non surveillés s’exécutent sans interruption.
- Ajoutez des configurations de nouvelle tentative et de temporisation pour préserver la stabilité de la collecte malgré la limitation des API.
- Tenez un journal d’exécution détaillé, comprenant les heures de début et de fin, les filtres et le nombre d’enregistrements, afin d’assurer la traçabilité lors des audits ou des revues.
- Planifiez des contrôles d’inventaire fréquents et des mises à jour d’activité hebdomadaires pour garder des rapports à jour sans générer de coûts inutiles.
- Pour les MSP, utilisez des boucles PowerShell pour parcourir les clients et générer un rapport distinct pour chaque tenant.
Étape n° 6 : exploiter concrètement les rapports utilisateur Microsoft 365
Une fois toutes les données de reporting collectées, c’est leur exploitation concrète qui transforme les métriques brutes en informations exploitables. En intégrant les exports à vos pratiques de conformité, de gouvernance et de revue de service, vous gagnez en visibilité sur les activités de vos clients.
Vous pouvez ainsi les aider à prendre des décisions éclairées et à réduire les risques. De plus, vous êtes en mesure de leur proposer des plans étayés par des données, qui apportent des améliorations de service mesurables.
Plan d’action recommandé :
- Joignez les extraits d’utilisateurs et d’activité à vos dossiers de conformité pour prouver que vous tenez des registres d’accès exacts et que vous surveillez l’utilisation des données.
- Croisez les rapports avec les notifications RH ou de l’annuaire pour détecter les utilisateurs inactifs, les accès obsolètes ou les licences orphelines.
- Présentez les points saillants lors des QBR pour mettre en évidence les tendances d’adoption, la hausse de l’utilisation ou la réduction des risques.
- Archivez les rapports pour constituer une référence de configuration factuelle, utile à l’analyse post-incident et à une résolution plus rapide.
Automatiser la collecte des rapports utilisateur Microsoft 365
Les processus manuels de collecte ralentissent l’analyse en raison de tâches répétitives, ce qui peut aussi faire grimper les coûts opérationnels. Grâce à l’automatisation, la collecte de données devient un processus cohérent et standardisé, qui limite les erreurs humaines.
Exemples de points d’automatisation :
- Créez une tâche de script nocturne qui exporte les inventaires d’utilisateurs à l’aide du module Microsoft Graph PowerShell.
- Planifiez des scripts hebdomadaires qui collectent les informations sur les utilisateurs actifs, ainsi qu’une tâche ciblée qui récupère les statistiques de boîtes aux lettres des utilisateurs signalés.
- Automatisez la création d’exports horodatés et leur transfert vers votre référentiel de preuves.
Les services NinjaOne pour la collecte des rapports d’activité des utilisateurs Microsoft 365
NinjaOne améliore la façon dont vous collectez et gérez les rapports d’activité des utilisateurs Microsoft Office 365 grâce à l’automatisation, à la sécurité et à l’évolutivité. Ses capacités de script à distance et de planification fluidifient les workflows basés sur PowerShell et permettent des déploiements centralisés et multi-tenant.
- Déploiement de scripts à distance : exécutez instantanément vos scripts Graph Report, Exchange Online et Microsoft Graph PowerShell de façon centralisée et à grande échelle grâce à la fonction Script à Distance de NinjaOne.
- Automatisations planifiées : utilisez la fonction d’automatisations planifiées de NinjaOne pour exécuter les scripts de collecte à des intervalles prédéfinis, par exemple au démarrage du système ou à la connexion de l’utilisateur.
- Champs personnalisés sécurisés : stockez les identifiants sensibles en toute sécurité dans des champs personnalisés sécurisés et accédez de façon centralisée aux informations enregistrées à l’aide de scripts PowerShell.
- Capacités de scripting complètes : créez des scripts PowerShell personnalisés pour automatiser les inventaires d’utilisateurs, repérer les utilisateurs inactifs par charge de travail ou identifier les candidats à l’optimisation des licences, entre autres.
Optimiser la collecte des rapports utilisateur Microsoft 365 avec PowerShell
Avec l’abandon des modules MSOnline et AzureAD, le passage à Microsoft Graph PowerShell a apporté une approche moderne et unifiée pour collecter des données dans l’ensemble des services Microsoft 365.
En combinant automatisation sécurisée, exports normalisés et constitution simplifiée des dossiers de preuves, les équipes transforment des métriques brutes en visibilité opérationnelle exploitable, qui soutient les audits, optimise l’usage des licences et accélère les enquêtes sur incidents.
Sujets connexes :
- Comment utiliser l’API Microsoft Graph pour extraire des rapports de conformité sur plusieurs tenants
- Comment automatiser les notifications de changement de rôle Microsoft 365 pour la supervision des administrateurs
- Comment planifier des vérifications via l’API Graph pour les licences expirées et les utilisateurs inactifs
- Utiliser l’API Microsoft Graph avec Windows PowerShell pour surveiller et gérer les clients Microsoft 365
