Signature Outlook avec les informations AD 1

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

Je suis formateur sur les offres de la plateforme Microsoft 365 et sur la suite Office de Microsoft : Excel, OneDrive, Planner, PowerPoint, SharePoint, Teams, Word, Yammer et tous leurs amis.

Je vous propose également...

[Interview] Martial Auroy, professionnel du monde Microsoft 2

[Interview] Martial Auroy, professionnel du monde Microsoft

Interview avec Martial Auroy, chef d'entreprise d'un centre de formation spécialisé Microsoft Office 365 en Normandie.

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

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 …

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. Le lien est down (:

  3. 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.

  4. 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 ?

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

  6. 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

  7. 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…

  8. 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

  9. 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.

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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.. 🙂

  15. 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

  16. Bonjour,
    Merci, je vais essayer sa !

  17. 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

  18. 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é.

  19. 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” .

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

  21. 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

    • Effectivement le chemin ne doit pas être en UNC si le script s’execute dans une procédure du NetLogon. Il faut faire un batch avec une unitée logique executer le script depuis cette unité puis defaire l’unité pour que l’utilisateur n’ait pas ce drive.
      Net use z: \…
      c:windowssystem32cscrpit.exe z:le script.vbs
      net use z: /delete

    • PS: Le lien du zip est maintenant bon.

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

  23. 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.

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

    Nalex

  25. excellent !
    et merci…