Création du script
This commit is contained in:
124
expirationPwd.ps1
Normal file
124
expirationPwd.ps1
Normal file
@@ -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
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
Reference in New Issue
Block a user