06/12/2025

Active Directory

Active Directory : comment modifier la date d’expiration de plusieurs utilisateurs ?

I. Présentation

Il est possible de configurer dans les propriétés d'un utilisateur au sein d'un annuaire Active Directory une date d'expiration du compte. Au-delà de cette date, le compte ne pourra plus être utilisé. Si vous souhaitez changer cette date d'expiration pour plusieurs utilisateurs simultanément, je vous propose deux méthodes :

  • La méthode par interface graphique
  • La méthode par script PowerShell

Nous verrons ces deux méthodes dans ce tutoriel, sachant que la méthode graphique a un avantage : elle est simple, mais elle a à mon sens un inconvénient non négligeable : la sélection d'utilisateurs depuis la console permet de sélectionner des utilisateurs situés dans la même unité d'organisation. Cela peut être gênant dans certains cas.

II. La méthode graphique

Ouvrez votre console Utilisateurs et ordinateurs Active Directory, placez-vous dans une Unité d'organisation contenant des utilisateurs où vous souhaitez modifier la date. Sélectionnez-les.

Sur la sélection, faites clic droit puis cliquez sur "Propriétés" et accédez à l'onglet "Compte".

Propriétés utilisateurs AD

Il vous reste à cocher la case "Date d'expiration du compte" puis "Fin de :" et définir la valeur que vous souhaitez. Validez, la propriété sera mise à jour sur l'ensemble des comptes utilisateurs sélectionnés.

III. La méthode par script

Le script PowerShell que je vous propose est simple, mais est fonctionnel (rédigé et testé par mes soins). Le principe est simple : définir un fichier CSV source contenant la valeur SamAccountName de chaque compte à actualiser, et, ensuite, utiliser ce fichier CSV pour effectuer l'action de mise à jour sur chacun des utilisateurs.

A. Le fichier CSV

Le fichier .csv doit être construit de la façon suivante :

samaccountname;
florian;
mickael;

La première ligne correspond à l'en-tête de la colonne et ne doit pas être modifiée. Ensuite, on indique un SamAccountName par ligne.

Pour connaître la valeur du SamAccountName de chaque utilisateur, ouvrez une console PowerShell et saisissez :

Get-ADUser -Filter * | ft Name,SamAccountName

B. Le fichier PS1

Voici le code du script Powershell :

# Importer le module Active Directory
Import-Module ActiveDirectory

# Import du CSV
$csv = Import-CSV -Path "C:\PS1\user.csv" -Delimiter ";" -Encoding UTF8

# Pour chaque utilisateur, on met à jour la date d'expiration
foreach($user IN $csv){
	Set-ADAccountExpiration $user.samaccountname -DateTime "Monday, November 18, 2013"
}

Vous devez modifier :

  • Le chemin vers le fichier CSV source à utiliser (paramètre -Path, ligne 5)
  • La date d'expiration que vous souhaitez (paramètre -DateTime, ligne 9)

Une fois que c'est paramétré correctement, vous pouvez exécuter le script. Il serait possible d'améliorer le script en ajoutant une colonne supplémentaire dans le CSV correspondant à la valeur d'expiration et en passant en variable la valeur de -DateTime. Ainsi, vous pouvez indiquer plusieurs dates d'expiration différentes dans le fichier.

La documentation du cmdlet Set-ADAccountExpiration est disponible sur cette page.

IV. Conclusion

Modifier la date d’expiration des comptes utilisateurs dans Active Directory est une opération simple, qu'il est possible de faire sur quelques comptes ou sur plusieurs centaines. La méthode graphique convient pour des traitements ponctuels et limités (notamment dans une seule OU), mais le script PowerShell avec CSV reste plus adapté pour les modifications en lots et l’automatisation.

FAQ

Peut-on appliquer différentes dates d’expiration à chaque utilisateur dans le fichier CSV ?

Oui : dans le script proposé, la date est statique, mais vous pouvez enrichir le CSV d’une colonne supplémentaire, par exemple DateExp et adapter le script pour utiliser cette valeur au lieu d’une date unique. Il faudra être vigilant avec le format de la date.

Le module PowerShell "ActiveDirectory" est-il obligatoire pour modifier la date d'expiration ?

Oui : le cmdlet Set‑ADAccountExpiration provient du module ActiveDirectory, et sans lui vous ne pourrez pas modifier l'attribut accountExpires correspondant à la date d’expiration du compte. Si vous souhaitez effectuer l'opération via PowerShell, c'est nécessaire.

Y a-t-il des risques à modifier massivement les dates d’expiration ?

Oui : si mal exécuté, on peut bloquer des utilisateurs actifs, ce qui aura un impact sur la productivité. Si vous utilisez PowerShell, effectuez un test sur quelques comptes afin de valider la syntaxe, en particulier la date.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

3 commentaires sur “Active Directory : comment modifier la date d’expiration de plusieurs utilisateurs ?

  • Bonjour,

    Je vous remercie pour cet article car il est très clair et explicite.

    J’ai une question générale à vous poser.

    Est t’il possible de modifier la date pour tous les utilisateurs de l’AD en poweshell?

    Je vous remercie d’avance.

    Cordialement.

    Répondre
    • Bonjour,

      Merci pour votre commentaire. Concernant votre question, oui c’est possible en PowerShell. Ceci grâce au module ActiveDirectory.

      Ensuite il faudra utiliser « Set-ADAccountExpiration » qui est dédié à cela et le combiner (avec un pipe) avec « Get-ADUser » pour « sélectionner » les utilisateurs au préalable.

      Cela répond à votre question ?

      Bonne journée et à bientôt j’espère.
      Florian

      Répondre
  • Bonjour,

    Tout d’abord merci pour cet article, j’ai essayé de modifier votre script car mon besoin est le suivant :

    – Obtenir la date d’expiration des comptes présent dans mon CSV

    Pour cela voici le script :

    # Importer le module Active Directory
    Import-Module ActiveDirectory

    # Import du CSV
    $csv = Import-CSV -Path « .\Extract_AccountExpiration\user.csv » -Delimiter « ; » -Encoding UTF8

    # Pour chaque utilisateur, on met à jour la date d’expiration
    foreach($user IN $csv){
    Get-ADUser $user.samaccountname -Properties SamAccountName,AccountExpirationDate | export-csv « .\Extract_AccountExpiration\final.csv »
    }

    ######################

    J’obtiens bien l’export cependant il me ressors que le dernier SamAccountname de ma liste.
    Alors que si je l’affiche uniquement dans PowerShell il me sort bien tout les SamAccountname

    Pouvez-vous m’aider ?

    Merci par avance pour votre aide

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.