commit 309cfec3a425e7f141da5094caa143ccc2197869 Author: Morgan JUBAULT Date: Thu Aug 22 18:56:56 2024 +0200 Création du script diff --git a/expirationPwd.ps1 b/expirationPwd.ps1 new file mode 100644 index 0000000..fbb1e5b --- /dev/null +++ b/expirationPwd.ps1 @@ -0,0 +1,124 @@ +######################################## +# AUTEUR : Morgan JUBAULT +# DATE : 19/08/2024 +# VERSION : 1.0 +# +# TITRE : Expiration pwd +######################################## + + +##### VARIABLES MODIFIABLES ##### +# INFO : Dans cette section, vous pouvez modifier les variables qui y sont présentes, +# à votre guise. +# + +# $users : Ciblage des utilisateurs concernés +$users = Get-ADUser -Filter * -Properties * -SearchBase "OU=Utilisateurs,OU=Labo,DC=ad,DC=lab" + + +## PARAMETRAGES DATES +# $dateThreshold : Durée maximale d'un mot de passe (en jours) +$dateThreshold = 30 + +# $dateAlert : Commencer à envoyer des mails x jours avant la date d'expiration +$dateAlert = 29 + + +## PARAMETRES NOTIFICATIONS E-MAIL + +# Encodage utilisé +$SMTPEncoding = [System.Text.Encoding]::UTF8 + +$SMTPUser = "" +$SMTPPassword = "" + +$SMTPServer = "" +$SMTPPort = 587 + +$SMTPFromName = "Service informatique" +$SMTPFromAddress = "informatique@example.com" + + + +################################# + + + + + + + + + + + + + +########################################## +# NE PAS MODIFIER A PARTIR DE CETTE ZONE # +########################################## + +### FONCTIONS +function sendMail (){ + + Param + ( + [Parameter(Mandatory=$true, Position=0)] + $Utilisateur, + [Parameter(Mandatory=$true, Position=1)] + [DateTime]$DateExpiration + ) + + $SMTPFrom = New-Object -TypeName System.Net.Mail.MailAddress($SMTPFromAddress, $SMTPFromName) + $SMTPCredentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $SMTPUser, $(ConvertTo-SecureString $SMTPPassword -Force -AsPlainText) + + $mailContent = Get-Content -Path ".\email.html" -Raw + $mailContent = $mailContent.Replace("{userUPN}",$Utilisateur.UserPrincipalName) + $mailContent = $mailContent.Replace("{userGivenName}",$Utilisateur.GivenName) + $mailContent = $mailContent.Replace("{expirationDate}","$($DateExpiration.ToLongDateString()) à $($DateExpiration.ToShortTimeString())") + + Send-MailMessage -Verbose ` + -From $SMTPFrom ` + -SmtpServer $SMTPServer ` + -Port $SMTPPort ` + -UseSsl ` + -Credential $SMTPCredentials ` + -Encoding $SMTPEncoding ` + -To $Utilisateur.EmailAddress ` + -Subject "Votre mot de passe doit être changé" ` + -Body $mailContent ` + -BodyAsHtml ` + -Priority High + +} + + +############ DEBUT DU SCRIPT ############# +# NE PAS MODIFIER A PARTIR DE CETTE ZONE # +########################################## + +Clear-Host +Write-Host "-----------------------------------------------" + +# Pour chaque utilisateur +foreach ($user in $users){ + + # Calcul de la date d'expiration du mot de passe + $expirationDate = $user.PasswordLastSet.AddDays($dateThreshold) + + # Récupération de la date actuelle + $currentDate = (Get-Date) + + # Calcul de la différence temporelle entre la date d'expiration et la date actuelle + $diff = $expirationDate - $currentDate + + + # Si le mot de passe expire prochainement, selon les paramètres définis + if($diff.Days -le $dateAlert){ + sendMail -Utilisateur $user -DateExpiration $expirationDate + + } + + + +} \ No newline at end of file