Auteur de questions
Script pour avertir les utilisateurs de l'expiration de leur certificat utilisateur.

Question
-
Bonjour,
Il y a quelques temps, j'avais créé un script (avec l'aide du forum) qui permettait d'envoyer un mail à l'utilisateur lorsque son mot de passe arrivait à expiration.
Aujourd'hui, j'aimerai, à partir du même modèle de script, envoyer un mail à l'utilisateur pour le prévenir qu'il faut qu'il renouvelle son certificat utilisateur.
Voici le script que j'utilise actuellement :
Import-Module ActiveDirectory
# Variables
$smtpServer = "Adresse IP du serveur"
$from = "Cert@domaine.com"
#$smtp_username = "DOMAIN\SmtpUser"
#$smtp_password = ConvertTo-SecureString "Mot2Pass" -AsPlainText -Force
#$smtp_credentials = New-Object System.Management.Automation.PSCredential ($smtp_username, $smtp_password)
$expireindays = 7
$maxPasswordAge = 90
$OUpath = "CN=Utilisateurs,DC=Compagny,DC=fr"
$today = (get-date)
# Recherche des utilisateurs activés qui ont un certificat qui expire
$users = Get-ADUser -SearchBase $OUpath -Properties GivenName,mail,PasswordLastSet -Filter {(PasswordNeverExpires -eq "False") -and (Enabled -eq "True")}
foreach ($user in $users)
{
# Informations du compte utilisateur
$Name = $user.GivenName
$emailaddress = $user.mail
# Recherche en jours de la dernière modification du certificat
$passwordSetDate = $user.PasswordLastSet
$lastset_days = (New-TimeSpan -Start $today -End $passwordSetDate).Days
# Expire dans x jours en comparaison avec la date de modification, et la durée max autorisée
$expireson = $lastset_days + $maxPasswordAge
if($expireson -lt 0){
continue;
}
# Préparation du message email
$subject="IT Services : Attention, expiration de votre certificat de sécurité dans $expireson jours"
$body ="
Bonjour $name,
<p> Votre certificat utilisateur va expiré dans $expireson jours.<br>
Si vous utilisez un compte du domaine, vous pouvez renouveler votre certificat en faisant…..<br>
<p>Merci de votre compréhension<br>
</P>
<br><br>
<p>
# Envoi du mail si l'expiration est < 7 jours
if ($expireson -lt $expireindays)
{
echo "Attention : Le compte de $Name expire bientôt ($expireson jours). Envoi d'un mail vers $emailaddress en cours"
Send-Mailmessage -smtpServer $smtpServer -from $from -to $emailaddress -subject $subject -body $body -bodyasHTML -priority High
}
else
{
echo "Information : Le compte de $Name expire dans $expireson jours. Aucun émail vers $emailaddress ne sera envoyé"
}
}
Après, je ne connais pas les objets ou variable qu'il faut renseigner sur les certificats de sécurité de l'utilisateur,
Pourriez-vous m'aider s'il vous plaît.
Merci
Sébastien
- Déplacé Boris Ivanov mardi 31 mars 2015 07:00
Toutes les réponses
-
-
-
-
Bonjour Sébastien,
dans ton cas je te conseille d'utiliser Get-ChildItem pour réaliser ton dev:
Get-ChildItem -Path cert:\CurrentUser\My | ForEach-Object {Write-Host $_.NotAfter -foregroundcolor cyan
$Before = [datetime]$_.NotAfter
}En espérant que cela pourra t'aider.
Cordialement,
Yannick VILSANS
- Modifié Yannick VILSANS samedi 25 juillet 2015 00:56