Extraire les utilisateurs Active Directory en CSV : méthodes csvde et PowerShell

Command line interface exporting user accounts to a CSV file in an Active Directory environment

Dans le cadre d’un audit de sécurité, d’un inventaire de parc ou de la préparation d’une migration de messagerie, tout administrateur système se retrouve un jour à devoir extraire la liste complète des comptes d’un annuaire Active Directory. Windows Server met à disposition plusieurs outils en ligne de commande pour générer rapidement un fichier CSV exploitable, qu’il s’agisse du vénérable utilitaire csvde ou des cmdlets PowerShell modernes.

L’outil historique : la commande csvde

L’exécutable csvde (CSV Directory Exchange) est un binaire intégré aux rôles AD DS sur Windows Server. Il permet d’importer ou d’exporter des données de l’annuaire au format texte séparé par des virgules. C’est une solution légère qui fonctionne directement dans une invite de commandes sans nécessiter le chargement de modules spécifiques.

Pour effectuer une extraction des utilisateurs en ciblant précisément les champs utiles (prénom, nom, adresse e-mail et initiales), la syntaxe repose sur le filtrage LDAP :

csvde -f export_users.csv -d « dc=societe,dc=lan » -r « (&(objectCategory=person)(objectClass=user)) » -l « givenName,sn,mail,initials,sAMAccountName »

Analysons les commutateurs indispensables pour maîtriser cette commande :

  • -f export_users.csv : définit le chemin et le nom du fichier de sortie.
  • -d « dc=societe,dc=lan » : spécifie le contexte de nommage racine (ou l’Unité d’Organisation) à partir duquel la recherche commence.
  • -r « … » : applique un filtre LDAP. Il est recommandé d’associer objectCategory=person et objectClass=user pour éviter de remonter les comptes d’ordinateurs, qui sont également des objets utilisateurs pour Active Directory.
  • -l « … » : restreint la liste des attributs retournés afin de ne pas saturer le fichier avec l’ensemble des métadonnées LDAP de l’objet.

Si vous devez exécuter cette manipulation sur un contrôleur distant, pensez à vérifier les accès réseau d’administration ou consultez notre mémo pour acceder à Windows 2008 en ligne de commande à distance via WinRM ou Telnet/SSH.

L’approche moderne : PowerShell et Get-ADUser

Bien que csvde conserve l’avantage de la rapidité sur de vieux serveurs, PowerShell s’impose aujourd’hui comme le standard pour toute tâche d’administration. Le module ActiveDirectory offre une souplesse bien supérieure pour formater les données, notamment les dates de dernière connexion ou l’état d’activation des comptes.

Pour utiliser cette méthode, le composant RSAT pour AD DS doit être disponible sur la machine. Sur les anciennes versions de serveurs, vous pouviez par exemple installer des features en ligne de commande avec servermangercmd ou via le gestionnaire de serveur.

Voici la commande PowerShell recommandée pour extraire les utilisateurs activés vers un fichier CSV propre avec encodage UTF-8 :

Get-ADUser -Filter ‘Enabled -eq $true’ -Properties GivenName, Surname, Mail, Title, Department | Select-Object SamAccountName, GivenName, Surname, Mail, Title, Department | Export-Csv -Path « C:\exports\ad_users.csv » -NoTypeInformation -Encoding UTF8 -Delimiter « ; »

Cette approche présente plusieurs avantages pratiques :

  1. Choix du délimiteur : l’utilisation du point-virgule (-Delimiter « ; ») permet d’ouvrir immédiatement le fichier dans Microsoft Excel sur un système configuré avec les paramètres régionaux français.
  2. Filtrage direct : l’argument -Filter ‘Enabled -eq $true’ écarte d’emblée les comptes désactivés, ce qui évite un nettoyage manuel a posteriori.
  3. Gestion des caractères accentués : le paramètre -Encoding UTF8 évite la corruption des prénoms et noms contenant des accents, un point souvent problématique avec la sortie brute de csvde.

Diagnostiquer les éventuels blocages

Lors d’une extraction sur un domaine étendu, assurez-vous que la résolution DNS vers vos contrôleurs de domaine fonctionne parfaitement. En cas de latence anormale ou d’échec de liaison LDAP, vous pouvez afficher le cache DNS sous windows pour vérifier que votre poste pointe bien vers les bons serveurs d’annuaire.

À lire aussi