Introduction
Les comptes utilisateur inactifs dans Active Directory représentent bien plus qu'un simple désordre administratif. Ils constituent une vulnérabilité sécuritaire majeure, compliquent les audits d'accès et créent une charge inutile sur l'infrastructure d'annuaire. Les anciens employés, les sous-traitants partis et les comptes de projet abandonnés s'accumulent progressivement, formant un terrain fertile pour les violations de sécurité et les non-conformités réglementaires.
La détection précise de ces comptes dormants s'avère souvent délicate. Les administrateurs IT se fient généralement aux attributs LastLogonDate ou lastLogonTimestamp, qui présentent toutefois des limitations importantes en raison des délais de réplication pouvant atteindre 14 jours. Cette imprécision rend les audits peu fiables.
Pourquoi identifier les utilisateurs inactifs Active Directory
Les comptes dormants dans votre infrastructure Active Directory génèrent plusieurs problèmes concrets :
- Risques sécuritaires accrus : Les comptes inactifs restent actifs par défaut, offrant des vecteurs d'attaque potentiels
- Complexité des audits de conformité : Les revues d'accès deviennent laborieuses avec des centaines de comptes fantômes
- Surcharge administrative : La gestion s'alourdit inutilement, consommant des ressources précieuses
- Problèmes de licences : Les comptes de service ou utilisateurs non nécessaires génèrent des coûts superflus
- Violations de gouvernance : Non-respect des politiques de sécurité et des cadres de conformité
Astuce de gouvernance
Les limites des outils natifs Active Directory
Les outils graphiques fournis par Microsoft ne permettent pas d'identifier efficacement les utilisateurs inactifs basés sur leur véritable dernier logon. L'attribut lastLogon fournit l'information la plus précise, mais son interrogation requiert d'accéder à chaque contrôleur de domaine individuellement.
Pour surmonter cette limitation, une approche PowerShell s'impose comme la solution optimale. Elle permet d'interroger tous les contrôleurs de domaine, de comparer les valeurs retournées et de déterminer avec exactitude le dernier logon réel de chaque utilisateur.
Script PowerShell pour détecter les utilisateurs inactifs
Caractéristiques principales du script
Un script PowerShell dédié à l'identification des utilisateurs dormants offre les fonctionnalités suivantes :
- Récupération de tous les utilisateurs inactifs en interrogeant chaque contrôleur de domaine
- Comparaison des attributs
lastLogonpour déterminer le dernier logon réel - Exportation détaillée vers un rapport CSV formaté
- Identification basée sur une période d'inactivité configurable
- Génération de rapports distincts pour les comptes activés et désactivés
- Détection des comptes jamais utilisés depuis leur création
- Récupération ciblée des comptes dormants dans des unités d'organisation (OU) spécifiques
- Installation automatique du module PowerShell Active Directory si absent
- Compatibilité avec le planificateur de tâches Windows

Le rapport généré contient des informations critiques : nom d'utilisateur, statut du compte, dernier logon, nombre de jours d'inactivité, chemin de l'OU, département, fonction et date de création du compte.
Méthodes d'exécution du script PowerShell
Exécution interactive du script
Télécharger le script PowerShell
Récupérez le script GetADInactiveUsers.ps1 et sauvegardez-le sur votre station de travail d'administration.
Ouvrir PowerShell en tant qu'administrateur
Lancez Windows PowerShell avec les privilèges d'administrateur sur une machine dotée du module Active Directory.
Naviguer vers le répertoire du script
Changez le répertoire courant vers l'emplacement où le script a été enregistré.
Exécuter le script interactif
Pour identifier tous les utilisateurs inactifs depuis 90 jours, exécutez la commande suivante :
1.\GetADInactiveUsers.ps1 -InactiveDays 90Le script vous guidera à travers les étapes d'exécution et générera un rapport détaillé.
Prérequis système
Planification automatique du script
Pour une surveillance continue sans intervention manuelle, intégrez le script dans le Planificateur de tâches Windows :
Ouvrir le Planificateur de tâches
Lancez le Planificateur de tâches (TaskScheduler) sur votre serveur d'administration.
Créer une nouvelle tâche
Créez une tâche programmée avec l'exécution requise (par exemple, hebdomadaire ou mensuelle).
Configurer l'action d'exécution
Dans la section Actions, définissez le programme à exécuter et utilisez le paramètre -Unattended pour supprimer les invites interactives :
1.\GetADInactiveUsers.ps1 -UnattendedLe paramètre -Unattended rend le script compatible avec une exécution planifiée sans intervention utilisateur.
Configurer les permissions du compte
Assurez-vous que le compte de service utilisé par le Planificateur dispose des permissions suivantes :
- Lecture des données Active Directory sur tous les contrôleurs de domaine
- Droit d'ouverture de session en tant que tâche planifiée
Vérifier la généération du rapport
Le rapport CSV sera automatiquement généré et sauvegardé dans le répertoire courant d'exécution du script.
Génération de rapports ciblés sur les utilisateurs inactifs
Le script intègre des filtres natifs permettant de générer des rapports spécifiques selon vos besoins opérationnels.
Identifier les utilisateurs actifs mais inactifs
Les comptes activés mais dormants depuis longtemps constituent une vulnérabilité directe. Ils conservent un accès complet aux ressources organisationnelles alors qu'ils ne sont plus utilisés.
1.\GetADInactiveUsers.ps1 -InactiveDays 90 -EnabledUsersOnlyCette commande exporte tous les comptes activés inactifs depuis 90 jours. Les administrateurs peuvent alors désactiver ces comptes ou revoir leurs permissions d'accès.
Pour affiner davantage, excluez les comptes jamais connectés :
1.\GetADInactiveUsers.ps1 -InactiveDays 90 -EnabledUsersOnly -ExcludeNeverLoggedInUsersCette approche se concentre sur les comptes précédemment actifs maintenant dormants, excluant les erreurs de provisioning.
Identifier les utilisateurs désactivés éligibles pour suppression
De nombreuses organisations suivent une politique de nettoyage progressif : les comptes inactifs sont d'abord désactivés, puis supprimés après une période supplémentaire.
1.\GetADInactiveUsers.ps1 -InactiveDays 180 -DisabledUsersOnlyCette commande récupère tous les comptes désactivés n'ayant pas enregistré d'accès depuis 180 jours, candidats idéaux pour une suppression définitive.
Repérer les comptes jamais utilisés
Les comptes n'ayant jamais généré d'authentification révèlent souvent des erreurs de provisioning ou des projets abandonnés :
1.\GetADInactiveUsers.ps1 -NeverLoggedInUsersOnlyLe rapport listera tous les comptes dont l'attribut lastLogon n'a jamais été défini.
Bon à savoir
Analyser les utilisateurs inactifs par unité d'organisation
Dans les grandes organisations, les utilisateurs sont généralement regroupés par OU (département, localisation, fonction). Une analyse par OU permet un nettoyage ciblé :
1.\GetADInactiveUsers.ps1 -InactiveDays 90 -OU "OU=Sales,OU=Users,DC=contoso,DC=com"Remplacez le DN (Distinguished Name) de l'OU par celui correspondant à votre infrastructure. Le script inclut automatiquement les OU enfants imbriquées.
Combiner plusieurs critères de filtrage
Pour un rapport plus granulaire, combinez les paramètres disponibles :
1.\GetADInactiveUsers.ps1 -InactiveDays 90 -OU "OU=Sales,OU=Users,DC=contoso,DC=com" -EnabledUsersOnly -ExcludeNeverLoggedInUsersCette commande extrait uniquement les comptes activés, inactifs depuis 90 jours, dans l'OU Sales, en excluant les comptes jamais utilisés.
Les paramètres combinables incluent :
-InactiveDays: Nombre de jours d'inactivité-OU: Chemin distingué de l'unité d'organisation-EnabledUsersOnly: Filtrer sur les comptes activés uniquement-DisabledUsersOnly: Filtrer sur les comptes désactivés uniquement-NeverLoggedInUsersOnly: Afficher uniquement les comptes jamais utilisés-ExcludeNeverLoggedInUsers: Exclure les comptes jamais connectés
Tableau comparatif des méthodes de détection
| Approche | Précision | Réplication Active Directory | Complexité |
|---|---|---|---|
| LastLogonDate (GUI) | Moyenne | Affectée par délais (14 jours) | Très faible |
| lastLogonTimestamp | Moyenne | Affectée par délais (14 jours) | Faible |
| lastLogon avec PowerShell | Très élevée | Non affectée | Moyenne |
| Script automatisé optimisé | Très élevée | Non affectée | Basse |
Bonnes pratiques pour la gestion des comptes inactifs
Important
Pour optimiser la gestion des utilisateurs inactifs :
- Établissez une politique d'inactivité : Définissez un seuil clair (par exemple 90 jours) déclenchant des actions
- Mettez en place un processus progressif : Désactivez d'abord, supprimez après une période supplémentaire
- Effectuez des révisions régulières : Planifiez des audits mensuels ou trimestriels
- Documentez les suppressions : Conservez un historique des comptes supprimés pour conformité
- Excluez les comptes critiques : Paramétrez le script pour ignorer les comptes de service ou administrateur
- Notifiez les responsables : Prévenez les managers avant désactivation de comptes de leurs équipes
- Archivez les données : Conservez les rapports pour traçabilité réglementaire
Intégration avec la sécurité Active Directory
La détection des utilisateurs inactifs s'intègre dans une stratégie de sécurité globale. En complément :
- Consultez nos guides sur la sécurisation d'Active Directory
- Examinez les audits d'accès complétés avec les données d'inactivité
- Synchronisez vos résultats avec les outils de gestion des identités (Entra ID pour environnements hybrides)
- Combinez avec des audits de permissions pour identifier les comptes suractifs ou mal configurés
Conclusion
La gestion proactive des utilisateurs inactifs dans Active Directory est une composante essentielle de la posture de sécurité organisationnelle. L'utilisation d'un script PowerShell automatisé élimine les imprécisions des outils natifs et permet une identification fiable basée sur le véritable dernier logon de chaque utilisateur.
En mettant en œuvre les approches détaillées dans ce guide—exécution interactive ou planifiée, filtrage granulaire, et processus progressif de nettoyage—vous réduirez significativement votre surface d'attaque et améliorerez votre conformité réglementaire.
N'attendez pas que vos comptes dormants deviennent une responsabilité : mettez en place une révision mensuelle dès aujourd'hui.



