Microsoft Lists s’est imposé comme l’un des outils les plus utiles de Microsoft 365 : suivi de projets, gestion d’inventaire, demandes internes, tableaux de bord, catalogues, etc. Derrière son interface moderne, Lists repose entièrement sur SharePoint, ce qui lui confère une structure solide, mais aussi un défi pour la gouvernance. Avec la multiplication des équipes, des sites SharePoint et des Teams, une question revient souvent :
Comment obtenir une liste complète des Microsoft Lists présentes dans mon tenant M365 ?
Et comment détecter celles qui ne sont plus actives ou utilisées ?
La bonne nouvelle : oui, c’est possible.
Légèrement indirect, mais très fiable.
Dans cet article, nous verrons :
- pourquoi inventorier les Microsoft Lists n’est pas aussi simple que prévu,
- comment accéder à toutes les listes du tenant,
- comment calculer leur “inactivité”,
- et un script PowerShell d’inventaire complet.
Pourquoi Microsoft Lists n’a pas d’inventaire “centralisé”
Il n’existe pas dans Microsoft 365 un écran d’administration du genre :
“Afficher toutes les Microsoft Lists du tenant.”
La raison est simple : Microsoft Lists n’est pas un service autonome. Il s’agit techniquement de listes SharePoint. Chaque Microsoft List est un objet SharePoint stocké dans un site :
- site d’équipe (Teams)
- site de groupe M365
- site SharePoint autonome
- site de communication
👉 Donc, inventorier Lists = inventorier SharePoint Lists.
Bonne nouvelle : SharePoint et Microsoft Graph offrent toutes les APIs nécessaires.
Les défis de l’inventaire
Bien que possible, un inventaire tenant-wide comporte quelques particularités :
1. Aucun appel unique “donne-moi toutes les Lists du tenant”
Il faut :
- récupérer tous les sites SharePoint,
- parcourir chaque site pour récupérer ses listes,
- filtrer uniquement les listes “Microsoft Lists” (celles visibles pour l’utilisateur).
2. Pas de champ “Dernier accès à la liste”
Microsoft Lists n’inclut pas d’attribut LastAccessedTime. Mais il existe une solution fiable : analyser la dernière modification des items.
3. Les listes orphelines existent
Par exemple :
- sites d’équipes Teams supprimées partiellement,
- listes dans des sites sans propriétaire actif,
- listes abandonnées après un projet.
L’inventaire permet de les identifier.
Ce que l’on peut inventorier et mesurer
| Fonctionnalité | Possible ? | Méthode |
|---|---|---|
| Lister toutes les Lists du tenant | ✔ | Graph + SharePoint |
| Identifier leur emplacement (site) | ✔ | Énumération des sites |
| Calculer l’inactivité | ✔ | Analyse des items |
| Identifier les listes orphelines | ✔ | Analyse du site + propriétaires |
| Voir les derniers accès | ⚠️ Partiel | Journaux d’audit Purview |
| Un endpoint unique “inventaire Lists” | ❌ | Non supporté |
Prérequis techniques
Vous aurez besoin :
- de PowerShell 7+,
- du module Microsoft Graph,
- des permissions :
Sites.Read.AllGroup.Read.All
Installation :
Install-Module Microsoft.Graph -Scope AllUsers
Connexion :
Connect-MgGraph -Scopes "Sites.Read.All","Group.Read.All"
Script PowerShell : Inventaire complet des Microsoft Lists + détection d’inactivité
Ce script :
- parcourt tous les sites SharePoint,
- récupère leurs listes,
- analyse les items de chaque liste,
- calcule une date d’inactivité,
- génère un rapport CSV complet.
# ==========================================================
# Inventaire Microsoft Lists + mesure de l'inactivité
# Objectif : Lister toutes les Lists du tenant et détecter
# les listes inactives (par items non modifiés)
# ==========================================================
Connect-MgGraph -Scopes "Sites.Read.All","Group.Read.All"
Select-MgProfile -Name v1.0
Write-Host "Récupération de tous les sites SharePoint..." -ForegroundColor Cyan
$sites = Invoke-MgGraphRequest -Method GET `
-Uri "https://graph.microsoft.com/v1.0/sites?search=*"
$results = @()
foreach ($site in $sites.value) {
Write-Host "Analyse du site : $($site.name)" -ForegroundColor Yellow
$lists = Invoke-MgGraphRequest -Method GET `
-Uri "https://graph.microsoft.com/v1.0/sites/$($site.id)/lists"
foreach ($list in $lists.value) {
# Filtrer les listes système de SharePoint
if ($list.list.template -in @("genericList","documentLibrary","tasks")) {
# Récupérer les items de la liste
$items = Invoke-MgGraphRequest -Method GET `
-Uri "https://graph.microsoft.com/v1.0/sites/$($site.id)/lists/$($list.id)/items"
$lastModified = ($items.value | Sort-Object `
lastModifiedDateTime -Descending | Select -First 1).lastModifiedDateTime
$results += [pscustomobject]@{
SiteName = $site.name
SiteId = $site.id
ListName = $list.name
ListId = $list.id
LastModified = $lastModified
IsInactive = $(if ($lastModified -lt (Get-Date).AddMonths(-6)) {"Yes"} else {"No"})
}
}
}
}
$output = "ListsInventory_$(Get-Date -Format 'yyyyMMdd').csv"
$results | Export-Csv -Path $output -NoTypeInformation -Encoding UTF8
Write-Host "Inventaire terminé ! Rapport généré : $output" -ForegroundColor Green
Exemple de rapport généré
| Site | Liste | Dernière modification | Inactive ? |
|---|---|---|---|
| TI Cloud | Suivi des licences | 2025-01-14 | ❌ |
| RH | Évaluations annuelles | 2023-06-22 | ✅ |
| Projet A | Backlog Agile | 2024-09-01 | ❌ |
| Ancienne équipe | Suivi des tâches | 2022-11-01 | ✅ (probablement orpheline) |
Ce rapport permet de :
- repérer les listes obsolètes,
- planifier le nettoyage des sites SharePoint,
- gérer la continuité des projets,
- auditer l’usage réel de Microsoft Lists,
- renforcer la gouvernance M365.
Même si Microsoft Lists ne propose pas un inventaire centralisé, la structure SharePoint permet de :
✔ inventorier toutes les listes du tenant,
✔ calculer leur inactivité,
✔ identifier des listes orphelines,
✔ optimiser la gouvernance,
✔ et soutenir les équipes dans le nettoyage ou la continuité des projets.
Avec Microsoft Graph, vous disposez d’un outil puissant et fiable pour superviser l’usage de Lists dans votre organisation.
