Obtenir les informations d’expiration de mot de passe des utilisateurs Active Directory
La première chose a faire est d’ouvrir Powershell et d’importer le module Active Directory
import-module activedirectory
Ensuite pour se familiariser avec la commande nous pouvons afficher son aide.
help Get-ADUser
Avec la commande si dessous nous allons afficher toutes le propriétés de notre utilisateur
Get-ADUser -identity username -properties *
Attention la commande si dessous affichera toutes les informations de tous les utilisateurs
Get-ADUser -filter * -properties *
Veillez à bien filtrer la commande avec les champs qui vous intéressent (PasswordLastSet et PasswordNeverExpires)
get-aduser -filter * -properties passwordlastset, passwordneverexpires |ft Name, passwordlastset, Passwordneverexpires
On peut aussi les trier par ordre alphabétique
get-aduser -filter * -properties passwordlastset, passwordneverexpires | sort name | ft Name, passwordlastset, Passwordneverexpires
Et exporter cette liste dans un fichier pour l’exploiter en remplaçant ft par select-object
Get-ADUser -filter * -properties passwordlastset, passwordneverexpires | sort-object name | select-object Name, passwordlastset, passwordneverexpires | Export-csv -path c:\temp\password-infos.csv
Calculer la date d’expiration du mot de passe d’un compte
Pour calculer quand expirera le mot de passe d’un utilisateur vous avez deux solution:
Lancer la commande powershell ci dessous:
[datetime]::FromFileTime((Get-ADUser -Identity usertest -Properties "msDS-UserPasswordExpiryTimeComputed")."msDS-UserPasswordExpiryTimeComputed")
Petit exemple de script qui prompt le login utilisateur et donne la date d’expiration du mot de passe pour ce compte:
import-module activedirectory write-host "Login de l'utilisateur a tester " $myuser = read-host Get-ADUser -Identity $myuser -Properties name| ft Name write-host "Le mot de passe expirera le :" [datetime]::FromFileTime((Get-ADUser -Identity $myuser -Properties "msDS-UserPasswordExpiryTimeComputed")."msDS-UserPasswordExpiryTimeComputed")
ou vous pouvez intaller Quest Powershell for Active Directory (http://social.technet.microsoft.com/wiki/contents/articles/2308.quest-powershell-for-active-directory.aspx) et lancer la commande suivante:
Get-QADUser -identity usertest -IncludeAllProperties | Select-Object SamAccountName, passwordexpires
De la même façon que pour Get-ADUser voici un petit script Questavec la commande Get-QADUser qui prompt le login utilisateur pour nous retourner la date d’expiration de son mot de passe:
write-host "Login de l'utilisateur a tester " $myuser = read-host Get-QADUser -identity $myuser -IncludeAllProperties | Select-Object SamAccountName, passwordexpires
4 Comments
Pascal
Merci pour cet article en français
GUEBRE Ismael
Merci pour ce tuto. Moi j’ai un souci avec mon script. Il ya une erreur a lexecution.J’ai fais un script pour information de fichier .csv mais le script me montre un problème. Je venais à vous pour votre aide. Le script est: Import-CSV C:\PS\NewUsers.csv | ForEach-Object { New-QADUser -Name $_.Name -FirstName $_.FirstName -LastName $_.LastName -Office $_.Office -Tittle $_.Tittle -Description $_.Description -Department $_.Department -Company $_.Company -City $_.City -StateOrProvince $_.State -UserPassword $_.UserPassword -SamAccountName $_.SamAccountName -UserPrincipaleName $_.UserPrincipaleName -DisplayName $_.DisplayName -ParentContainer $_.ParentContainer }
À l’exécution j’ai une erreur sur le _.Name qui dit que la valeur est null ou vierge. Que puis-je je faire? J’ai besoin de votre aide. Vous mescusez si j’ai pas bien choisi la bonne fenêtre pour émettre ma discussion. D’avance merci.
unmaxx
Bonjour,
si je comprends bien, vous voulez faire un script qui va chercher dans un csv la liste des utilisateurs à créer et avec une boucle créer tous ces utilisateurs, c’est bien cela? (création avec les outils Quest et non powershell pur?)
Edwi
Super Merci ! Ca m’a bien aidée