none
Script pour avertir les utilisateurs de l'expiration de leur certificat utilisateur. RRS feed

  • 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&eacute dans $expireson jours.<br>

        Si vous utilisez un compte du domaine, vous pouvez renouveler votre certificat en faisant…..<br>

       

        <p>Merci de votre compr&eacutehension<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

    lundi 30 mars 2015 14:15

Toutes les réponses

  • Vous pouvez vous inspirer de celui ci : https://gallery.technet.microsoft.com/Get-user-certificate-that-20b9388a

    Bruce Jourdain de Coutance - Consultant MVP Exchange http://blog.brucejdc.fr

    lundi 30 mars 2015 14:58
  • Bonjour,

    Quand je tape : GetExpiringCert  dans powershell, il me dit que cela n'est pas reconnu.

    Auriez-vous une autre solution?

    Merci


    Sébastien

    jeudi 16 avril 2015 08:45
  • Bonjour Superseb9,

    Est-ce que ce lien pourrait vous intéresser ? http://blogs.technet.com/b/heyscriptingguy/archive/2013/03/05/use-powershell-to-find-certificates-that-are-about-to-expire.aspx

    Je cherche aussi un moyen d'avertir mes utilisateurs de l'expiration de leur certificat, avez-vous réussi le développement de votre script ?

    Cordialement,

    Dylan

    jeudi 23 juillet 2015 10:13
  • bonjour,

    non toujours pas.

    C'est vrai que c'est embêtant de voir des signatures non valides une fois que le certificat expire.

    On va essayer de trouver cela!

    Cordialement,

    Sébastien


    Sébastien

    jeudi 23 juillet 2015 12:09
  • 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


    samedi 25 juillet 2015 00:56