Untitled
unknown
plain_text
2 years ago
8.6 kB
2
Indexable
Never
#Début des logs Start-Transcript -Path "C:\AGRICA\LOGS\Mail_MDP.log" -IncludeInvocationHeader #Calcul du jour depuis le début de l'année pour aujourd'hui $dayOfYear = (Get-Date).DayofYear $dayofWeek = (Get-Date).DayOfWeek $year = Get-Date -Format "yyyy" #Variable du mail $Subject = "Ton mot de passe expire bientôt !" $SubjectLast = "Ton mot de passe expire demain !" $SubjectExpired = "Ton mot de passe a expiré !" $EmailFrom = "L'équipe d'Agrica <MDP@fdsea51.fr>" $EmailCC = "support@fdsea51.fr" $SMTPServer = "192.168.10.109" $userExpired = "Liste des utilisateurs dont le mot de passe a expiré :`n" #Récupération du nom d'utilisateur foreach ($identity in Get-ADUser -Filter * -Server SRV-REI-AD01.fdsea.local -SearchBase "OU=OU_USER,DC=FDSEA,DC=LOCAL" | Where-Object { $_.DistinguishedName -notlike '*OU=0_GENERIQUE,*' } | Select-Object -expandproperty SamAccountName) { #Récupération du mail $mail = Get-ADUser -Identity $identity -Properties "mail" -Server SRV-REI-AD01.fdsea.local |Select-Object -expandproperty mail #Récupération du prénom $name = Get-ADUser -Identity $identity -Properties "GivenName" -Server SRV-REI-AD01.fdsea.local |Select-Object -expandproperty givenName #Récupération du nom complet (prénom + nom) $fullName = Get-ADUser -Identity $identity -Properties "name" -Server SRV-REI-AD01.fdsea.local |Select-Object -expandproperty name #Récupération de la date de fin du MDP $pwdLastSet = Get-ADUser -Server SRV-REI-AD01.fdsea.local -identity $identity -properties "msDS-UserPasswordExpiryTimeComputed" | Select-Object -Property @{Name="_";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}} #Mise en forme de la date $pwdLastSet = ($pwdLastSet |Select-String -Pattern "\d{1,2}\/\d{1,2}\/\d{1,40}").Matches.Value #Check if variable $pwdLastSet is Null if (!$pwdLastSet){ Write-Warning "$identity Problème MDP" } #Check if variable $mail is Null elseif (!$mail){ Write-Warning "$identity Problème mail" } else{ #Split de la date pour utilisation du calcul du nombre de jour depuis le début de l'année $dayPwd = $pwdLastSet.split('/')[1] $monthPwd = $pwdLastSet.split('/')[0] $yearPwd = $pwdLastSet.split('/')[2] $pwdLastSetOK = "$dayPwd/$monthPwd/$yearPwd" #Calcul du jour depuis le début de l'année pour la date d'expiration du MDP $dayOfYearPwd = (Get-Date -Year $yearPwd -Month $monthPwd -Day $dayPwd).DayofYear #Calcul de la différence d'année $diffYear = $year - $yearPwd #Calcul du nombres de jour de la différence $dayDiffYear = $diffYear * -365 #Calcul de la différence $dayBefChange = $DayOfYearPwd - $DayOfYear $totalDayBefChange = $dayBefChange + $dayDiffYear $trueTotalDayBefChange = [Math]::Abs($totalDayBefChange) #Variables du mail $EmailTo = "$fullName <$mail>" $body = @" Bonjour $name. Ton mot de passe expire dans $dayBefChange jours. Pense à le changer dès que possible. Il est possible de changer ton mot de passe en appuyant sur CTRL+ALT+SUPPR et en cliquant sur "Modifier un mot de passe". Pour rappel, si tu ne changes pas ton mot de passe dans le délai imparti, la connexion au VPN ne sera plus possible. N'hésite pas à contacter le support au 03.26.04.77.03 ou au 1044 en interne. Bonne journée, Cordialement, L'équipe d'Agrica. "@ $bodyLast = @" Bonjour $name. Ton mot de passe expire demain. Il devient nécessaire de le changer dès que possible ! Il est possible de changer ton mot de passe en appuyant sur CTRL+ALT+SUPPR et en cliquant sur "Modifier un mot de passe". Pour rappel, si tu ne changes pas ton mot de passe dans le délai imparti, la connexion au VPN ne sera plus possible. N'hésite pas à contacter le support au 03.26.04.77.03 ou au 1044 en interne. Bonne journée, Cordialement, L'équipe d'Agrica. "@ $bodyExpired = @" Bonjour $name. Ton mot de passe a expiré depuis $trueTotalDayBefChange jour(s). Si tu es en télétravail, merci de contacter le support Agrica afin de changer ton mot de passe. Sinon, si tu es au bureau, il est possible de changer ton mot de passe en appuyant sur CTRL+ALT+SUPPR et en cliquant sur "Modifier un mot de passe". N'hésite pas à contacter le support au 03.26.04.77.03 ou au 1044 en interne. Bonne journée, Cordialement, L'équipe d'Agrica. "@ #Si inférieur à 31 if ($totalDayBefChange -lt -31){ Write-Host "$identity, ton mot de passe est expiré. La date butoire était le $pwdLastSetOK. Au delà de 31 jours, aucun mail n'est envoyé." $userExpired = $userExpired + "`n$fullName : MDP expiré le $dayPwd/$monthPwd/$yearPwd, soit depuis $trueTotalDayBefChange jour(s). (Témoin -31)" } #Si inférieur à 0 elseif ($totalDayBefChange -lt 0) { Write-Host "$identity, votre mot de passe est expiré depuis $trueTotalDayBefChange jour(s). La date butoire était le $pwdLastSetOK. La tâche planifiée s'éxecutera le prochain Lundi. Pour plus d'information, merci de voir le fichier de log Mail_MDP_expiré.log" $userExpired = $userExpired + "`n$fullName : MDP expiré le $dayPwd/$monthPwd/$yearPwd, soit depuis $trueTotalDayBefChange jour(s)." if ($dayofWeek -eq "Monday") { Write-Host "Nous sommes Lundi. $identity, ton mot de passe est expiré. La date butoire était le $pwdLastSetOK. Envoi d'un mail à $mail" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25) $SMTPMessage = New-Object Net.Mail.MailMessage $EmailFrom, $EmailTo, $SubjectExpired, $bodyExpired $SMTPMessage.cc.Add($EmailCC) $SMTPClient.Send($SMTPMessage) } } #Si égal à 1 jour elseif ($totalDayBefChange -eq 1) { Write-Host "$identity, il te reste $dayBefChange jour avant de changer le MDP. La date butoire est le $pwdLastSetOK. Envoi d'un mail à $mail (Lendemain)" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25) $SMTPMessage = New-Object Net.Mail.MailMessage $EmailFrom, $EmailTo, $Subject, $bodyLast $SMTPMessage.cc.Add($EmailCC) $SMTPClient.Send($SMTPMessage) } #Si égal à 7 jours elseif ($totalDayBefChange -eq 7) { Write-Host "$identity, il te reste $dayBefChange jours avant de changer le MDP. La date butoire est le $pwdLastSetOK. Envoi d'un mail à $mail (7 jours)" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25) $SMTPMessage = New-Object Net.Mail.MailMessage $EmailFrom, $EmailTo, $Subject, $body $SMTPMessage.cc.Add($EmailCC) $SMTPClient.Send($SMTPMessage) } #Si égal à 14 jours elseif ($totalDayBefChange -eq 14) { Write-Host "$identity, il te reste $dayBefChange jours avant de changer le MDP. La date butoire est le $pwdLastSetOK. Envoi d'un mail à $mail (14 jours)" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25) $SMTPMessage = New-Object Net.Mail.MailMessage $EmailFrom, $EmailTo, $Subject, $body $SMTPMessage.cc.Add($EmailCC) $SMTPClient.Send($SMTPMessage) } #Si égal à 21 jours elseif ($totalDayBefChange -eq 21) { Write-Host "$identity, il te reste $dayBefChange jours avant de changer le MDP. La date butoire est le $pwdLastSetOK. Envoi d'un mail à $mail (21 jours)" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25) $SMTPMessage = New-Object Net.Mail.MailMessage $EmailFrom, $EmailTo, $Subject, $body $SMTPMessage.cc.Add($EmailCC) $SMTPClient.Send($SMTPMessage) } #Sinon else { Write-Host "$identity, il te reste $dayBefChange jours avant de changer le MDP. La date butoire est le $pwdLastSetOK. Aucun mail envoyé" } } } Write-Host $userExpired $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25) $SMTPClient.Send("L'équipe d'Agrica <MDP@fdsea51.fr>", "Support Agrica <support@fdsea51.fr>", "Liste des utilisateurs avec un mot de passe expiré", $userExpired) Stop-Transcript