17/11/2024

Active DirectoryPowerShell

Modifier date d’expiration de plusieurs comptes Active Directory

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 à 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éfinissez 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

Récupérer 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 correspondante à la valeur d'expiration et en passant en variable la valeur de -DateTime, ainsi, vous pouvez indiquer plusieurs dates d'expirations différentes dans le fichier.

N'hésitez pas à donner votre avis et à noter l'article.

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 “Modifier date d’expiration de plusieurs comptes Active Directory

  • 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 comment les données de vos commentaires sont utilisées.