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