Rechercher et supprimer des comptes inactifs

Les comptes inactifs dans Active Directory, qu’il s’agisse d’utilisateurs ou de machines, représentent un risque de sécurité latent. Ils peuvent être exploités par des attaquants ou créer une fausse perception de l’état réel du parc informatique. Il est donc crucial de détecter, désactiver puis supprimer régulièrement ces objets obsolètes.


Objectif

Ce guide vous explique comment :

  • Identifier les comptes ordinateurs inactifs depuis un certain temps.
  • Les désactiver de manière préventive.
  • Les supprimer définitivement, selon votre politique de rétention.

🛡️ Il est recommandé d’adopter une approche en plusieurs étapes : identification → désactivation → suppression, afin de limiter les risques de suppression accidentelle.


Outil utilisé : dsquery

dsquery est un utilitaire en ligne de commande disponible sur les serveurs Windows avec le rôle AD DS Tools. Il permet d’interroger Active Directory selon des critères personnalisés.


Étape 1 : Trouver les ordinateurs inactifs

Pour rechercher les ordinateurs inactifs depuis 12 semaines (environ 3 mois), limitez les résultats à 100 pour un test :

dsquery computer -inactive 12 -limit 100
Comptes inactifs : dsquery

Vous pouvez ajuster la période (-inactive) selon votre politique (valeur en semaines).


Étape 2 : Désactiver les comptes inactifs

Une fois les machines identifiées, désactivez-les :

dsquery computer -inactive 12 | dsmod computer -disabled yes

💡 Les comptes désactivés peuvent être déplacés dans une OU spécifique pour suivi et vérification avant suppression.


Étape 3 : Supprimer les ordinateurs désactivés

Pour lister puis supprimer tous les comptes ordinateurs désactivés :

dsquery computer -disabled | dsrm -noprompt

⚠️ Le paramètre -noprompt supprime sans confirmation. À utiliser avec précaution, surtout dans les scripts automatisés.


Étape 4 : Supprimer directement les comptes inactifs

Si votre politique autorise la suppression immédiate sans phase de désactivation, utilisez :

dsquery computer -inactive 12 | dsrm -noprompt

Remarques importantes

  • Exécutez toutes les commandes dans une session avec droits d’administrateur AD.
  • Testez d’abord avec des OU de test avant de généraliser à l’ensemble du domaine.
  • Conservez une trace (export CSV ou log) des objets supprimés à des fins d’audit.

Qu’en est-il des comptes utilisateurs ?

Les mêmes commandes s’appliquent en remplaçant computer par user. Exemple :

dsquery user -inactive 8 | dsmod user -disabled yes

Bonnes pratiques d’organisation

  • Créez une OU dédiée pour les comptes désactivés (_ToBeDeleted ou Staging_Trash).
  • Intégrez ces opérations dans un script PowerShell programmé (ou tâche planifiée).
  • Complétez cette approche avec une solution de supervision (Azure AD Identity Protection, SCCM, etc.) pour remonter les objets non conformes.

Script PowerShell : nettoyage des comptes ordinateurs inactifs AD

# ===================================================================
# Script : Clean-InactiveComputers.ps1
# Auteur : Lijane Consulting
# Objet  : Identifier, désactiver ou supprimer les comptes ordinateurs inactifs dans AD
# Version : 1.0
# ===================================================================

# 🔧 PARAMÈTRES CONFIGURABLES
$weeksInactive = 12               # Période d'inactivité en semaines
$limitResults = 1000             # Nombre maximum de résultats retournés (0 = illimité)
$exportPath = "C:\Scripts\Computers_Inactifs.csv"

# 🟩 Activer les modules selon besoin
$doListing = $true               # true = recherche uniquement
$doDisable = $false              # true = désactiver les comptes trouvés
$doDelete  = $false              # true = supprimer les comptes trouvés ou désactivés

# ===================================================================

Write-Host "`n🧹 Début du traitement des ordinateurs inactifs ($weeksInactive semaines)..." -ForegroundColor Cyan

# Construction de la commande dsquery
$dsqueryCmd = "dsquery computer -inactive $weeksInactive"
if ($limitResults -gt 0) {
    $dsqueryCmd += " -limit $limitResults"
}

# Exécution de la requête
$inactiveComputers = Invoke-Expression $dsqueryCmd

if (!$inactiveComputers) {
    Write-Host "Aucun ordinateur inactif trouvé." -ForegroundColor Yellow
    exit
}

# Export CSV
if ($doListing) {
    $inactiveComputers | ForEach-Object {
        [PSCustomObject]@{
            DistinguishedName = $_
            Nom               = ($_ -split ',')[0] -replace 'CN='
        }
    } | Export-Csv -Path $exportPath -NoTypeInformation -Encoding UTF8

    Write-Host "`n📁 Liste exportée : $exportPath" -ForegroundColor Green
}

# Désactivation des comptes
if ($doDisable) {
    Write-Host "`n🚫 Désactivation des comptes inactifs..." -ForegroundColor Magenta
    $inactiveComputers | ForEach-Object {
        $dsmodCmd = "dsmod computer $_ -disabled yes"
        Invoke-Expression $dsmodCmd
        Write-Host "🔒 Désactivé : $_"
    }
}

# Suppression des comptes désactivés
if ($doDelete) {
    Write-Host "`n🗑 Suppression des comptes désactivés..." -ForegroundColor Red
    $dsrmCmd = "dsquery computer -disabled | dsrm -noprompt"
    Invoke-Expression $dsrmCmd
    Write-Host "✅ Suppression effectuée (sans confirmation)."
}

Write-Host "`n✅ Script terminé." -ForegroundColor Cyan

Utilisation

  • 📋 Recherche uniquement : activez $doListing = $true et laissez les autres en $false.
  • 🔒 Désactivation uniquement : activez $doDisable = $true (peut être combiné avec $doListing).
  • 🗑 Suppression directe : activez $doDelete = $true (⚠️ supprime tous les comptes désactivés).
  • Le fichier exporté (.csv) contient les noms et DNs des objets listés.

À noter

Une version PowerShell native sans dsquery peut aussi être créée si souhaité (avec Get-ADComputer, Disable-ADAccount, etc.).

Le script utilise les outils en ligne de commande natifs (dsquery, dsmod, dsrm), ce qui le rend compatible sur tous les serveurs AD.

Vous pouvez planifier ce script via une tâche planifiée pour automatiser le nettoyage périodique.


Comptes inactifs : Conclusion

Le nettoyage régulier des comptes ordinateurs et utilisateurs inactifs dans Active Directory est un pilier fondamental de toute stratégie de cybersécurité et de gouvernance des identités. Grâce à dsquery, vous disposez d’un moyen simple, natif et puissant de sécuriser et rationaliser votre annuaire.

Retour en haut