Metsys Blog

Alerter les utilisateurs dont le mot de passe va expirer avec PowerShell

Cliquez pour évaluer cet article !
0 avis

Objectifs du script

Alerter les utilisateurs dont le mot de passe va expirer dans moins de 3 jours.

Comment fonctionne le script

Ce script est basé sur le module PowerShell Quest ActiveRoles Management Shell.
Il compare la date d’aujourd’hui avec la date d’expiration du mot de passe (attribut passwordexpires).
Si le mot de passe expire dans 1, 2 ou 3 jours il envoie un mail.

Il est à noter que l’attribut Passwordexpires n’existe pas dans l’annuaire Active Directory. C’est le plugin Quest qui le calcule cette valeur à partir de l’attribut pwdLastSet.

Code du script

Créer le fichier C:_admexpiration-compteV2.ps1 et copier le contenu ci dessous dans ce fichier :

# Variables
# Changer l’adresse email de l’expéditeur
$MSender = expediteur@votredomainedemessagerie.fr
# Changer l’adresse IP du serveur de messagerie
$MServer = "192.168.0.1"
# Indiquer le chemin LDAP de votre annuaire
$Ldappath = "OU=Utilisateurs,DC=msreport,DC=intra"
# Fonction pour générer le mail
function Send-SMTPmail($to, $from, $subject, $body, $attachment, $cc, $bcc, $port, $timeout, $smtpserver, [switch] $html, [switch] $alert)
{
if ($smtpserver -eq $null) {$smtpserver = $MServer}
$mailer = new-object Net.Mail.SMTPclient($smtpserver)
if ($port -ne $null) {$mailer.port = $port}
if ($timeout -ne $null) {$mailer.timeout = $timeout}
$msg = new-object Net.Mail.MailMessage($from,$to,$subject,$body)
if ($html) {$msg.IsBodyHTML = $true}
if ($cc -ne $null) {$msg.cc.add($cc)}
if ($bcc -ne $null) {$msg.bcc.add($bcc)}
if ($alert) {$msg.Headers.Add("message-id", "<3bd50098e401463aa228377848493927-1>")}
if ($attachment -ne $null)
{
$attachment = new-object Net.Mail.Attachment($attachment)
$msg.attachments.add($attachment)
}
$mailer.send($msg)
}
# Programme principal
# Chargement du module PowerShell Quest
add-PSSnapin -Name Quest.ActiveRoles.ADManagement -ErrorAction SilentlyContinue
$Today = get-date -format d
$users = Get-QADUser -enable -SizeLimit 0 -Searchroot $Ldappath | where-object {$_.PasswordNeverExpires -eq $false} | Select-Object name,mail,passwordexpires,samaccountname
foreach ($user in $users)
{
if ($user.'passwordexpires')
{
$usrmail = $user.mail
$usrname = $user.name
$usrlogin = $User.sAMAccountName
$ExpiredDate = ($user.'passwordexpires').adddays(-3)
$today = (get-date).date
#$today = (get-date -date 22/08/2012).date.adddays(-3)
$difference = $ExpiredDate - $today
if ($difference.Days -eq 3)
{
$MSubject = "Votre mot de passe va expirer dans 3 jours."
$Mbody = "Bonjour $usrname,<br><br>Votre <b>mot de passe de compte utilisateur ($usrlogin)</b> va expirer dans trois jours.<br><br>Merci de fermer votre session Windows et de vous authentifier de nouveau."
Send-SMTPmail -to $($user.mail) -from $MSender -subject $MSubject -cc $MSender -smtpserver $MServer -body $Mbody -html
}
elseif ($difference.Days -eq 2)
{
$MSubject = "Votre mot de passe va expirer dans 2 jours."
$Mbody = "Bonjour $usrname,<br><br>Votre <b>mot de passe de compte utilisateur ($usrlogin)</b> va expirer dans deux jours.<br><br>Merci de fermer votre session Windows et de vous authentifier de nouveau."
Send-SMTPmail -to $($user.mail) -from $MSender -subject $MSubject -cc $MSender -smtpserver $MServer -body $Mbody -html
}
elseif ($difference.Days -eq 1)
{
$MSubject = "Votre mot de passe va expirer dans 1 jour."
$Mbody = "Bonjour $usrname,<br><br>Votre <b>mot de passe de compte utilisateur ($usrlogin)</b> va expirer dans un jour.<br><br>Merci de fermer votre session Windows et de vous authentifier de nouveau."
Send-SMTPmail -to $($user.mail) -from $MSender -subject $MSubject -cc $MSender -smtpserver $MServer -body $Mbody -html
}
}
}

Pour planifier l’exécution du script

Créer un fichier script.bat et coller le contenu suivant dans ce fichier :

%SystemRoot%system32WindowsPowerShellv1.0powershell.exe -psconsolefile "C:Program FilesQuest SoftwareManagement Shell for ADConsoleSettings.psc1" -command C:_admexpiration-compteV2.ps1

Utiliser le planificateur de tâche Windows pour exécuter l’outil une fois par jour à l’heure souhaitée.

Notez cet article

Vous avez aimé cet article ?

Rendez-le plus visible auprès des internautes en lui mettant une bonne note.

Cliquez pour évaluer cet article !
0 avis

Articles pouvant vous intéresser

RETEX CERT

Tout d’abord, en termes d’éthique et pour respecter la confidentialité des sujets aussi sensibles que