Signature Outlook avec les informations AD

J’ai trouvé sur Nalex.fr un article pour ajouter une signature Outlook par défaut avec les informations du compte utilisateur AD.

J’ai apporté quelques modifications à ce script pour qu’il fonctionne aussi bien avec XP, Vista que Seven.

J’ai ajouté aussi quelques méthodes pour rechercher Outlook et sa version.

Voici le code à exécuter avec CScript.exe suivi du fichier vbs avec son chemin complet (le script doit être lancé à l’ouverture de session des utilisateurs.

Vous pouvez personnaliser la signature :

  • Modifier signature_001.htm pour la version html
  • Intégrer le logo de l’entreprise en changeant les 2 fichiers image (image1.jpg et image2.jpg)
  • Modifier signature_001.rtf et signature_001.txt pour les versions rtf ou texte

 

Script signature avec AD

A propos Martial Auroy

Mon goût pour les défis et pour la création m’ont amené à la direction de trois services informatiques. Dans le domaine industriel, dans la gestion de production, dans les ressources humaines et la paie. Créatif et Ingénieur de formation, j’ai pu développer et mettre en place des systèmes informatiques divers. Gestion de paies internationale, appareils de mesure dans les ateliers de l’aérospatiale ou des robots pour la fabrication de cosmétiques. Le Web m’est bien connu. La sécurité et la communication ont toujours été parties intégrantes des projets mis en place : Sécurité d’intrusion, d’accès et de traçabilité. Je suis curieux et toujours à la recherche de connaissance. J’aime le cinéma, la philosophie, voyager.

Je vous propose également...

Supprimer une boite partagée avec outlook 2010 ou 2013 (environnement Exchange)

Après avoir fait une délégation de boîte aux lettres sur le serveur Exchange avec Accès …

Signature HTML dans Mail Mac OS X Mavericks

Les méthodes changent entre les différentes version d’OS Apple pour intégrer une signature html dans …

48 commentaires

  1. le lien ne serait plus bon. Essayez celui-ci et le script est plus récent 😉
    https://www.synergeek.fr/download/SignatureOutlook2013

    • Bonjour,
      Avez vous la version avec le Windows 10 car je galère assez…

      • Bonjour, Oui je dispose d’une version qui marche avec Windows 10. Mais attention, pour ce qui est de Office 2013 et 2016, ce script n’arrive plus à définir la signature par défaut. Les signatures sont bien enregistrées mais il faut que l’utilisateur choisisse la signature parmi celles disponibles.
        Je vous fais un 7z avec le paquet.

    • Bonjour,

      un grand merci pour ce travail 🙂 J’ai néanmoins quelques problème, je vais essayé d’etre le plus concis possible:

      – Le script rencontre une erreur à la ligne 193 a savoir :” call objFSO.CopyFolder (RepSource, RepCible ,TRUE) ” erreur: chemin d’accès introuvable; code 800A004C

      Malgré tout la signature se créée bien.

      – si je fais une modif et re-éxecute le script, la signature precedement déployée ne change pas.
      – si je supprime la signature de l’outlook puis re-execute le script, cette derniere ne remonte pas.

      Si vous avez une idée je suis preneur 🙂

      merci par avance pour votre aide.

      yoann

      • Bonjour,
        Merci pour ce script que j’ai pu adapter à W10. Par contre je rencontre la même erreur et la signature ne se créé pas. le répertoire est vide.
        Comment avez vous solutionné le problème. J’ai cherché sur le net mais n’étant pas développeur c’est un peu difficile.
        Merci pour votre aide. Stéphane.

    • Bonjour,

      J’utilise la version de 2009 pour la signature et c’est vraiment un super boulot! Merci à Martial Auroy et toutes celles et ceux qui ont apporté leur pierre à l’édifice.

      Par contre je confirme que le lien indiqué pour la version 2014 n’est pas / plus valide:
      https://www.synergeek.fr/download/SignatureOutlook2013

      S’il y a moyen de télécharger la dernière mouture je suis preneur car je migre mon parc de W7 à W10 et evidement je me confronte comme tout le monde à l’impossibilité d’utiliser le script de 2009 sur un W10…

      Merci d’avance.

  2. Bonjour,

    J’ai un petit problème avec votre script j’arrive bien à créer ma signature sans problème par-contre la signature affiché dans le gestionnaire est nickel alors que dans le mail le nom prenom il garde #nom#.

    Comment faire ?

    • Bonjour,
      Le prénom vient de “GivenName” de l’AD et le nom est repris du “sn”. A vérifier que ces informations sont bien renseignées dans l’AD.
      Sinon, toutes les autres fonctionnent ? Et “le gestionnaire” c’est quoi ?

      • Je n’utilise pas le Given name mais cn pour récupérer nom et prénom.
        Sinon je n’ai aucun problème avec le reste et ce que j’appelle le gestionnaire c’est quand on vas dans un nouveau mail et qu’on vas dans le paramètre signature on peux y voir les différentes signatures associer à Outlook. Dans cette fenêtre ma signature est la bonne nom et prénom y sont affichés mais si je veux que la signature soit bonne au niveau du mail je doit réenregistré la signature.

        Cordialement

    • En effet, c’est étrange.
      La signature est déployée via une policie qui exécute alors le script. Les éléments #xxx# sont alors remplacés par l’information correspondante. Le fichier est enregistré aux différents formats dans le dossier “C:\Users\\AppData\Roaming\Microsoft\Signatures”
      Sans enregistrer quoi que ce soit depuis Outlook, les fichiers dans ce dossier sont déjà avec toutes les informations.
      Par contre, il faut aller définir une signature par défaut à la main. Car le script ne le fait pas.
      Martial.

  3. Merci de votre réponse rapide.

    Mais les versions de fichiers semble être les mêmes que ceux qui ne fonctionnent pas. L’erreur se produit uniquement avec Office 2013 c’est assez étrange.

    Avez vous des fichiers plus récents que ceux présents sur le site synergeek ?

  4. Je confirme le problème de pascal impossible d’appliquer les signatures à cause de cette erreur. y a t’il une solution ?

  5. Bonjour,
    Ce script fonctionne à merveille depuis quelque temps avec windows XP, seven (32 ou 64 bits) et office 2003 et 2010 (32 bits)
    Je viens de recevoir des machines 64bit avec office 2013 64 bit.
    J’ai l’erreur
    “800A01C3 cet objet n’es pas une collection” à cette ligne

    For Each subkey In arrProfileKeys
    strsubkeypath = strKeyPath & “” & subkey

    Je pense que les profils ne sont pas enregistrés au même endroit dans le registre.
    Je ne trouve pas l’emplacement des profils dans le registre et meme si je le trouvais, je ne saurais pas comment coder tout ça.
    Merci d’avance.
    Pascal

  6. Je m’auto reponds pour windows 8 🙂

    La valeur à mettre est:
    if InStr(1,strResultat,”8.1 PROFESSIONNEL”) >0 then GetOsName=”HUIT”
    if InStr(1,strResultat,”8″) >0 then GetOsName=”HUIT”

    et il faut ajouter une petite chose dans une autre ligne:
    Code d’origine: case “SEVEN”, “VISTA”:
    Code modifié: case “HUIT”, “SEVEN”, “VISTA”:

    Par contre je n’arrive pass à me débarrasser de l’erreur “800A01C3 cet objet n’es pas une collection”, le code donné par Martial Auroy ne résou pas ce pb…

  7. Bonjour,

    Quelqu’un pourrait il me donner la valeur que je dois mettre pour que ce script fonctionne sous Windows 8 SVP.
    if InStr(1,strResultat,”???”) >0 then GetOsName=”???”

    Vous remerciant par avance.
    Laurent

  8. Merci pour ce script, il est vraiment très bien fait.

    J’ai du apporter quelques améliorations pour la compatibilité 2013 et la gestion d’une version de signature pour être appliqué en GPO.

  9. bon le code ne s’affiche pas, surement est-il pris en compte en tant que code lors de l’affichage
    Donc c’était une balise Span avec le style Display = #VISIBLE#. #VISIBLE#étant modifié par le script vbs

  10. Deux petites choses :
    – j’avais oublié d’ajouter le code html utilisé : et
    – le code html proposé n’a pas l’air de fonctionner avec Outlook 2003

  11. J’ai utilisé la méthode suivante :
    – Insérer la ligne suivante avant le groupe de ligne affichant le mobile par
    et en fermant ce groupe par dans le ficheir HTM
    – Dans le script vbs , insertion à la fin de la définition de la variable TAB_VARIABLE
    array(“#VISIBLE#” , “” , “”, “none”) _

    – Dans le script vbs pour la fonction replaceLdapUserInfoInFile, j’ai rajouté le contrôle Select comme suit :
    Select Case tVariables(i)(0)
    Case “#VISIBLE#”
    ‘ Test Valeur de Mobile ou tVariable(5) correspond à #MOBILE# en tête du script vbs
    If tVariables(5)(3) = “” Then
    tVariables(i)(3) = “none”
    else
    tVariables(i)(3) = “block”
    End If
    Case Else
    tVariables(i)(3) = userLdapInfo.Get(tVariables(i)(1))
    ‘ Si ce paramétre AD est introuvable, on prend la valeur par défaut.
    If (Err.Number 0) Then
    tVariables(i)(3) = userLdapInfo.Get(tVariables(i)(2))
    End If
    end select

  12. Merci pour ce script qui m’aide beaucoup. Ne connaissant pas le vb, je me permets de vous demander un complément au niveau des variables “active directory” et de leur affichage.
    Dans la société, tout le monde n’a pas un mobile. Si je mets une variable
    array(“#MOBILE#” , “mobile”, “”, “”), _
    et que dans le html je mets
    M : #MOBILE#
    Il affiche bien le n° de mobile de la personne. Si la personne n’a pas de mobile d’inscrit dans Active directory, la signature affiche un M: puis rien à côté.
    Y a t’il une possibilité de ne rien afficher.
    Cordialement
    Pascal

  13. Bonjour,
    Merci pour ce script superbe 🙂 . Je rencontre par contre un souçis d’encoding les “é” importés de l’AD apparaissent tous forme de carrés blanc dans la signature. Si vous avez une idée.. 🙂

  14. Bonjour,
    Après avoir placé le code, la fonction Function IsOutlookRunning() qui, comme vous l’avez annoté permet l’activation de la signature Outlook.
    Je souhaiterai donc crée une condition qui éxécuter la fonction seulement si outlook est instalé.
    Ce langage n’était pas mon point fort, je ne sais pas comment mis prendre.

    • Bonjour,
      Dans le fichier vbs, il y tu a entre les lignes 37 à 48 ceci :
      ‘##########################################################
      ‘#### lancement du traitement.
      If Not IsOutlookRunning Then
      ‘*** Copie et personalisation des fichiers de signature dans “%USERPROFILE%Application DataMicrosoftSignatures”.
      Call getLdapProfileAndCopyFiles(REP_MODELE_SIGNATURE, NOM_SIGNATURE, TAB_FICHIERS_IMAGES, TAB_VARIABLES)
      ‘*** Définition de la nouvelle signature par défaut dans Outlook.
      Call SetDefaultSignature(NOM_SIGNATURE)
      ‘else
      ‘ strMsg = “Veuillez fermer Outlook avant d’executer ce script”
      ‘ MsgBox strMsg, vbExclamation, “SetDefaultSignature”
      End If

      ‘##########################################################

      Il faut sélectionner ce bloc et coller à la place ceci :

      ‘########################################
      ‘#### lancement du traitement.
      on error resume next
      Set appOut = Nothing
      Set appOut = CreateObject(“Outlook.Application”)
      on error goto 0
      If (not appOut Is Nothing) Then
      Set appOut = Nothing
      If Not IsOutlookRunning Then
      ‘*** Copie et personalisation des fichiers de signature dans “%USERPROFILE%Application DataMicrosoftSignatures”.
      Call getLdapProfileAndCopyFiles(REP_MODELE_SIGNATURE, NOM_SIGNATURE, TAB_FICHIERS_IMAGES, TAB_VARIABLES)
      ‘*** Définition de la nouvelle signature par défaut dans Outlook.
      Call SetDefaultSignature(NOM_SIGNATURE)
      End If
      end if
      ‘#############################

      Ce code tente de créer un application outlook. Si elle ne peut pas, Outlook n’est donc pas présent et le script ne s’exécutera pas.
      Cordialement

      • Merci de votre réponse.
        Le code inséré, il me renvoie à la fonction:

        Function IsOutlookRunning()

        strComputer = “.”
        strQuery = “Select * from Win32_Process ” & _
        “Where Name = ‘Outlook.exe'”
        Set objWMIService = GetObject(“winmgmts:” _
        & “{impersonationLevel=impersonate}!\” _
        & strComputer & “rootcimv2”)
        Set colProcesses = objWMIService.ExecQuery(strQuery)
        For Each objProcess In colProcesses
        If UCase(objProcess.Name) = “OUTLOOK.EXE” Then
        IsOutlookRunning = True
        Else
        IsOutlookRunning = False
        End If
        Next
        End Function

        Donc il doit malheuresement quand même exécuter le script jusqu’à la fin …
        Cordialement Thomas

  15. Bonjour,
    Merci, je vais essayer sa !

  16. Bonjour,
    Merci pour votre script, j’essaie de le mettre en place le code se lance correctement à l’ouverture de session sur les utilisateurs contenus dans UO.
    Une fois qu’un utilisateur se connecte à une session TSE (où outlook n’est pas installé), j’obtiens le message d’erreur “800A01C3 cet objet n’es pas une collection”.
    Il me renvoi à la ligne:

    For Each subkey In arrProfileKeys
    strsubkeypath = strKeyPath & “” & subkey
    ‘On Error Resume Next
    objreg.SetBinaryValue HKEY_CURRENT_USER, strsubkeypath, “New Signature”, myArray
    objreg.SetBinaryValue HKEY_CURRENT_USER, strsubkeypath, “Reply-Forward Signature”, myArray
    ‘MsgBox strsubkeypath
    Next
    Else
    strMsg = “Please shut down Outlook before running this script.”
    ‘MsgBox strMsg, vbExclamation, “SetDefaultSignature”

    Je n’arrive pas à corriger se soucis car le script fonctionne correctement.

    Merci

    • Bonjour,
      Il se plante lors de la recherche de la branche de la base de registre qui devrait contenir les signatures. Comme il n’y a pas d’outlook, pas de branche.
      Je mettrai bien ce bloc en lieu et place :
      if Not arrProfileKeys is nothing then
      For Each subkey In arrProfileKeys
      strsubkeypath = strKeyPath & “” & subkey
      objreg.SetBinaryValue HKEY_CURRENT_USER, strsubkeypath, “New Signature”, myArray
      objreg.SetBinaryValue HKEY_CURRENT_USER, strsubkeypath, “Reply-Forward Signature”, myArray

      Next
      end if

  17. le soucis est que sur certaines machines de mon domain, notament les postes en vista ou 7, un message d’erreur (bullet) s’affiche au démarrage. “You are logged in temp profile…” Je ne sais pas si ce message est lié à la mise en place de ce script, mais je l’ai remarqué quasiment en même temps que sa mise en service. autre chose de bizarre lié à ce message, quand l’utilisateur est correctement loggé dans son profil, le prompt affiche:
    P:\user
    Pourtant lorsqu’une machine n’est pas correctement loggée dans sa session l’invite du prompt est:
    C:\doc & settTEMP
    le fonctionnement n’est pas perturbé donc je ne me suis pas attaché à solutionner ce message d’erreur.
    Une idée peu-être ?
    Merci pour vos réponses.

    • Ah ben là, ça sent bien un profile corrompu. Ce qui me chagrine, c’est que ce soit seulement sur Vista ou Seven. Il est clair qu’ils n’ont pas le même niveau de sécurité que XP par exemple. L’AD et la gestion des sessions a changé depuis vista.
      Quoi qu’il en soit, il faut essayer avec un des PC et se logger en Admin local. Aller dans les propriétés avancées de l’ordinateur, dans les profils utilisateur. supprimer ce profil. attention, en le supprimant tous les paramètres locaux seront perdus évidement.
      Fermer la session Admin et ouvrir avec la session de cet utilisateur que l’on vient de supprimer. La session va recréer alors les informations à partir du compte par défaut et des informations de l’AD.
      A essayer. Si cela fonctionne, il faut le faire pour toutes les machines.
      Ce qui est étrange c’est “certaines machines” et puis “quand l’utilisateur est correctement logué”. Car pour moi, il n’est ou pas, logué. Il ne peut pas être “mal” logué.

  18. Bonjour,

    Une fois les signature déployées, faut-il laisser actif le scipt de manière définitive dans “propriétés –> profil –> logon script”, ou peut-on le supprimer ?

    merci.

    • Personnellement, je le laisserais. L’utilisateur a très bien pu supprimer cette signature depuis outlook ou la modifier. Quand il rouvrira sa session, la signature originale sera à nouveau “toute propre” .

  19. Le téléchargement est à nouveau opérationnel…

  20. Bonjour,

    j’installe avec des fichiers datant de septembre 2011, car il n’est plus possible de télécharger le script sur ce site (erreur 404). Le script s’execute à l’ouverture de session, après la validation de l’Os et l’avertissement de la copie dans le rep \doc &settuserapp datamicrosoft
    je reçois le message d’erreur suivant:
    Sricpt:\servernetlogonSignatureOutlook.vbs
    Line 176
    Char: 3
    Error Chemind’accès introuvable
    Code 800A004C
    Source: Erreur d’execution Microsoft VBScript

  21. Bonjour,
    Je souhaite téléchargé le script, mais le lien semble avoir un souci.
    Erreur 404 ?
    Merci d’avance

  22. Bonjour M Auroy,

    Je rencontre un petit soucis (manque de connaissance en Vbs) pour l’installation de ce script, vous serait-il possible de me donner une adresse e-mail afin de vous faire parvenir fichiers, log, et explications.
    d’avance merci.

    • Bonjour,
      En fait, il suffit d’exécuter le script avec la commande cscript.exe qui est sur tous les windows dans C:WindowsSystem32
      la syntaxe serait donc C:WindowsSystem32Cscript.exe suivi du chemin du vbs.
      Rien d’autre de spécial à faire si ce n’est les droits de lecture de l’AD évidement mais en ce qui concerne la lecture tout utilisateur a le droit de lire ses propres informations.

  23. Bonjour,
    Je suis content de voir que ce script évolue pour être utilisable dans des environnements variés.

    Nalex

  24. excellent !
    et merci…

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.