locked
Script pour afficher des raccourcie dans le menu démarrer => tous les programmes RRS feed

  • Question

  • Bonjour,

    Je cherche un Script pour afficher des raccourcies dans le menu démarrer => tous les programmes => dossier X  des postes W7 sous un 2003 serveur avec AD suivant l'appartenance à un groupe. Ces raccourcies ce trouvent sur sur différents serveurs du domaine.

    Ce script serait mis dans le NETLOGON du Controleur de domaine.

    Je ne trouve rien sur le NET.

    Merci...

    Pascool ;-)


    PASCOOL

    mardi 28 février 2012 14:55

Réponses

  • Le dimanche 04/03/2012 17:19:05, PASCOOL a écrit dans le message <news:3df6ca7e-953f-436b-8f58-505838f72d72@communitybridge.codeplex.com> ce qui suit :

    Quelle est la différence entre ces deux choses ? est-ce que ce n'est pas la même chose ? c'est quoi le Wsh ?

    C'est le nom d'une VARIABLE !


    Set fldrs=Shell.SpecialFolders
    Progfolder=fldrs("Programs")

    - - - et

    strStartup =*Wsh*Shell.SpecialFolders("programs")

    Set Shell= Wscript.CreateObject("WScript.Shell")
    Avec la variable objet "Shell",  je définis une instance de la classe objet "WScript.Shell"

    J'aurais très bien pu l'appeler "Glutzenbaum" ! ;-)
       Set Glutzenbaum=Wscript.CreateObject("WScript.Shell")

    Mais pour être cohérent, j'aurais du écrire :
      Set fldrs=Glutzenbaum.SpecialFolders
     Il faut reconnaitre que "Shell" est plus parlant comme nom de variable!!!! ;-)

    Dans le script que tu cites, on trouve
      strStartup =WshShell.SpecialFolders("programs")
    tout simplement parce que l'auteur a appelé la variable "WshShell"
    (WSH étant l'acronyme de "Windows Script Host")

    Quant à l'instruction
      strStartup =WshShell.SpecialFolders("programs")
    c'est un condensé des 2 instructions :
      Set fldrs=WshShell.SpecialFolders
      strStartup=fldrs("Programs")
     Personnnellement, je préfère la 2ème forme parce que :
    - la progression du traitement est plus explicite
    - on peut utiliser l'objet intermédiaire ("fldrs") pour autre chose
     p.ex.
      strRecent=fldrs("Recent")
     ...
     Enfin, je ferai remarquer que le choix de "strstartup" pour nom de la variable n'est pas des plus heureux, car il prête à CONFUSION!

    EN effet, fldrs("Programs") retourne (p.ex.)
     C:\Users\BELLAMY\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
    c'est-à-dire le menu "programmes" du compte en cours

    de même que fldrs("AllUsersPrograms") retourne (p.ex.)
      C:\ProgramData\Microsoft\Windows\Start Menu\Programs
    c'est-à-dire le menu "programmes" commun à tous les comptes
     Par contre, fldrs("Startup") ou fldrs("AllUsersStartup") retournent respectivement :
     C:\Users\BELLAMY\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
     C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

    qui sont les menus "démarrage"

    Donc, pour être COHÉRENT, il aurait mieux valu écrire :
       strStartup =WshShell.SpecialFolders("Startup")
    ou
      strPrograms=WshShell.SpecialFolders("Programs")
       --
    May the Force be with You!
    La Connaissance s'accroît quand on la partage
    ----------------------------------------------------------
    Jean-Claude BELLAMY [MVP Expert IT Pro]
    http://www.bellamyjc.org  ou http://jc.bellamy.free.fr

    • Marqué comme réponse PASCOOL lundi 5 mars 2012 10:01
    dimanche 4 mars 2012 18:48

Toutes les réponses

  • Le mardi 28/02/2012 15:55:49, PASCOOL a écrit dans le message <news:39583204-4ead-4534-84f7-2de24ff1de7f@communitybridge.codeplex.com> ce qui suit :

    Bonjour,

    Je cherche un Script pour afficher des raccourcies dans le menu démarrer => tous les programmes => dossier X  des postes W7 sous un 2003 serveur avec AD_suivant l'appartenance à un groupe_. Ces raccourcies ce trouvent sur sur différents serveurs du domaine.

    On dit (et écrit)  "UN RACCOURCI" (nom masculin)

    <Presque HS>
    Oui, je sais, je suis un maniaque de l'orthographe, mais je commence à être excédé par la déficience de certains, qui m'obligent à faire des efforts pour les comprendre! Et pour ceux qui sont vraiment nuls, il existe des correcteurs orthographiques!
    </Presque HS>
     > Ce script serait mis dans le NETLOGON du Controleur de domaine.

    Je ne trouve rien sur le NET.

    Une fois de plus je vais rappeler l'une de mes maximes favorites :
      "Un problème bien exposé est à moitié résolu,
       Un problème exprimé comme une pantoufle est indémerdable!"

    Et dans le cas présent, ta question est de la 2ème forme! ;-)
     Des raccourcis de QUOI ?
    A quel genre de test songes-tu dans "suivant l'appartenance à un groupe" ?
     J'ai conçu, depuis longtemps, un script VBS qui sert à créer sur le bureau un raccourci en ligne de commande :
      http://www.bellamyjc.org/fr/vbsdownload.html#raccourci

    Un autre, pour créer des raccourcis dans le menu démarrer :
      http://www.bellamyjc.org/fr/vbsdownload.html#shortcut2startmenu
     J'ai conçu également un script de test de l'appartenance à un groupe
      http://www.bellamyjc.org/fr/vbsdownload.html#ismember
     Est-ce cela que tu recherches ?

    Sois COMPLET / CONCRET / CONCIS / PRÉCIS !



    May the Force be with You!
    La Connaissance s'accroît quand on la partage
    ----------------------------------------------------------
    Jean-Claude BELLAMY [MVP Expert IT Pro]
    http://www.bellamyjc.org  ou http://jc.bellamy.free.fr

    mardi 28 février 2012 15:23
  • J'ai conçu également un script de test de l'appartenance à un groupe http://www.bellamyjc.org/fr/vbsdownload.html#ismember Bonjour, Je pense que celui-ci pourrait répondre à ma requête, je souhaite mettre des raccourcis de liens WEB intranet principalement, mais aussi pourquoi pas des .exe, Par exemple si un utilisateur est habilité au groupe AP-INTRANET-METEO, le lien web voulu s'affiche dans le menu démarré du compte de l'utilisateur appartenant à ce groupe. Je regarde ça, merci. Pascool

    PASCOOL

    mercredi 29 février 2012 07:55
  • avec ce script :  J'ai conçu également un script de test de l'appartenance à un groupe
      http://www.bellamyjc.org/fr/vbsdownload.html#ismember

    Comment fait-on pour rajouter le lien voulu suivant son emplacement sur le réseau et au groupe auquel il appartient ? Comment fait-on pour lui dire où mettre l'emplacement de ce lien dans le menu démarrer ? Merci.


    PASCOOL

    mercredi 29 février 2012 09:49
  • Bonjour Pascool,

    Voici un script pour ajouter calc.exe dans "démarrer->tous les programmes"

    set WshShell = WScript.CreateObject("WScript.Shell" )
    strStartup = WshShell.SpecialFolders("AppData" )
    set oShellLink = WshShell.CreateShortcut(strStartup & "\Microsoft\WINDOWS\Start Menu\Programs\Calculatrice.lnk" )
    oShellLink.TargetPath = "%SYSTEMROOT%\system32\calc.exe"
    oShellLink.WindowStyle = 1
    oShellLink.Hotkey = "Ctrl+Alt+C"
    oShellLink.IconLocation = "%SystemRoot%\system32\calc.exe"
    oShellLink.Description = "Calculatrice"
    oShellLink.WorkingDirectory = "%HOMEPATH%"
    oShellLink.Save 

    Cordialement,

    Florin 


    Florin CIUCA, MSFT       Join TechNetFr on Viadeo   Votez! Appel à la contribution
    Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    • Proposé comme réponse arch21Editor jeudi 1 mars 2012 16:07
    mercredi 29 février 2012 12:38
  • Salut florin,

    C'est déja cool, il me manquera plus que l'apparition des liens liés aux groupes.

    Merciiii

    PASCOOL

    mercredi 29 février 2012 13:12
  • Comment fait-on une boucle pour demander plusieurs raccourcis ?

    Pascool


    PASCOOL

    mercredi 29 février 2012 13:45
  • Le mercredi 29/02/2012 14:45:25, PASCOOL a écrit dans le message <news:f4e55dea-f8a8-4efa-8a37-f99c0d915d6e@communitybridge.codeplex.com> ce qui suit :

    Comment fait-on une boucle pour demander plusieurs raccourcis ?

    Dans quoi ?
    Dans un script VBS ?

    Qu'entends-tu par "demander plusieurs raccourcis" ?
    Avec une boite de dialogue ?

    Sois PRÉCIS !
    Tout est faisable, encore faut-il qu'on sache QUOI est à faire!
     Si tu veux créer des raccourcis "en rafale", avec un script de commandes + mon script "shortcut2startmenu.vbs", c'est nasodigital !

    http://www.bellamyjc.org/fr/vbsdownload.html#shortcut2startmenu
     Exemple :
    (fichier nommé "multirac.cmd")

    ----------- couper ici -----------
    @echo off
    if %1.==. goto syntaxe
    for %%P in (%1) do cscript c:\vbs\shortcut2startmenu.vbs %%P
    goto fin
    :syntaxe
    echo Ce script attend en parametre le nom d'un fichier
    echo contenant la liste des raccourcis a creer.
    echo P.ex.
    echo   multirac "k:\divers\listerac.txt"
    :fin
    ----------- couper ici -----------

    Dans le fichier passé en paramètres on a la liste des raccourcis à créer.
    On peut personnaliser en fonction de l'utilisateur, p.ex. en donnant un fichier liste fonction du compte, que l'on aura créé au préalable pour chacun des comptes.
     Exemple :
       multirac.cmd "\\serveur\partage\%username%\listerac.txt

    et on placera multirac.cmd dans NETLOGON (c'est un exemple)

    Il suffit de faire fonctionner son imagination !
     --
    May the Force be with You!
    La Connaissance s'accroît quand on la partage
    ----------------------------------------------------------
    Jean-Claude BELLAMY [MVP Expert IT Pro]
    http://www.bellamyjc.org  ou http://jc.bellamy.free.fr

    mercredi 29 février 2012 15:20
  • Jean-Claude,

    Je vais essayé d'être le plus précis possible...

    Je souhaite créer des groupes dans AD, chacun de ces groupes permet à un compte utilisateur si il  y est habilité de lui donner accès à un raccourci dans son menu démarré=>programmes.

    L'idée, est donc de créer un fichier vbs dans lequel sera résumé l’ensemble des groupes et des emplacements source où ces liens pointent et d'y indiquer qu'ils doivent apparaître ou non suivant l'habilitation ou non d'un compte utilisateur. il pourrait donc y avoir une multitude de liens dans le menu démarré du compte si il est habilité à plusieurs de ces groupes.

    EX : user pascool est habilité au groupe INTRANET-METEO +  INTRANET-RESTAURANT + APPLI-PSP7, quand il ouvrira sa session, il retrouvera le raccourci de la météo de son site intranet, du menu de la cantine de la semaine du site intranet et à l'application paint shop pro 7 dans son menu démarré\programmes\dossierX.

    Merci ;-)


    PASCOOL

    mercredi 29 février 2012 21:08
  • Grace à ce scripte, je peux créer des raccourcis suivant l'appartenance à des groupes. Mais si j'enlève l'habilitation, le(s) raccourci(s) restent. J'aimerai qu'ils ne s'affichent que si ils sont habilités au groupe à l'instant de l'ouverture de session.

    Existe t-il aussi un moyen dans un script vbs de créer un dossier dans ..\Menu Démarrer\Programmes\newdossier si il n'existe pas ?

    Merci pour votre aide...

     DomainName=WshShell.ExpandEnvironmentStrings("%USERDOMAIN%")
      Set UserObj = GetObject("WinNT://" & DomainName & "/" & WshNetwork.username)

    'Init Groups
    Dim UserGroups
    Dim GroupObj
    UserGroups=""
    For Each GroupObj In UserObj.Groups
      UserGroups=UserGroups & "[" & GroupObj.Name & "]"
    Next

    if InGroup("LINK-INTRANET-METEO") then
    set oShellLink = WshShell.CreateShortcut ("c:\Documents and Settings\all users\Menu Démarrer\Programmes\meteo.lnk" )
    oShellLink.TargetPath = "c:\groups$\data\meteo\meteo.txt"
    oShellLink.WindowStyle = 1
    oShellLink.Hotkey = "Ctrl+Alt+C"
    oShellLink.IconLocation = "%SystemRoot%\system32\meteo.exe"
    oShellLink.Description = "Icone de la météo"
    oShellLink.WorkingDirectory = "%HOMEPATH%"
    oShellLink.Save
    end if

    if InGroup("LINK-INTRANET-RESTAURANT") then
    set oShellLink = WshShell.CreateShortcut ("c:\Documents and Settings\all users\Menu Démarrer\Programmes\Resto.lnk" )
    oShellLink.TargetPath = "c:\groups$\data\restaurant\restaurant.txt"
    oShellLink.WindowStyle = 1
    oShellLink.Hotkey = "Ctrl+Alt+C"
    oShellLink.IconLocation = "%SystemRoot%\system32\resto.exe"
    oShellLink.Description = "Icone du resto"
    oShellLink.WorkingDirectory = "%HOMEPATH%"
    oShellLink.Save
    end if

    'FIN DE BOUCLE
    Function InGroup(strGroup)
       InGroup=False
       If InStr(UserGroups,"[" & strGroup & "]") Then
             InGroup=True
       End If
    End Function


    PASCOOL

    jeudi 1 mars 2012 14:51
  • Le jeudi 01/03/2012 15:51:11, PASCOOL a écrit dans le message <news:fe8ddf39-08a9-4f28-ac36-6bef0c3174d8@communitybridge.codeplex.com> ce qui suit :

    Grace à ce scripte, je peux créer des raccourcis suivant l'appartenance à des groupes. Mais si j'enlève l'habilitation, le(s) raccourci(s) restent. J'aimerai qu'ils ne*s'affichent* que si ils sont habilités au groupe à l'instant de l'ouverture de session.

    Existe t-il aussi un moyen dans un script vbs de créer un dossier dans ..\Menu Démarrer\Programmes\*newdossier* si il n'existe pas ?

    oui, bien sûr !

    Set Shell= Wscript.CreateObject("WScript.Shell")
    Set fso  = WScript.CreateObject("Scripting.FileSystemObject")
    Set fldrs=Shell.SpecialFolders

    Progfolder=fldrs("Programs")
    NewF=Progfolder & "\" & "newdossier"
    if not fso.FolderExists(NewF) then set f=fso.CreateFolder(NewF)
     NB:
     fldrs("Programs")
      donne le chemin de Programmes pour le compte en cours.
    P.ex.
    C:\Users\BELLAMY\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
     fldrs("AllUsersPrograms")
      donne le chemin de Programmes pour tous les comptes.
    P.ex.
    C:\ProgramData\Microsoft\Windows\Start Menu\Programs



    May the Force be with You!
    La Connaissance s'accroît quand on la partage
    ----------------------------------------------------------
    Jean-Claude BELLAMY [MVP Expert IT Pro]
    http://www.bellamyjc.org  ou http://jc.bellamy.free.fr

    • Proposé comme réponse arch21Editor jeudi 1 mars 2012 16:09
    jeudi 1 mars 2012 15:54
  • je regarde ça demain matin, merci....

    ( ça doit être bien de savoir tout créer comme ça... )


    PASCOOL

    jeudi 1 mars 2012 20:15
  • Bonjour, Merci JC pour la création du dossier.

    Avec ce morceau de script les raccourcis sont créés, y a t-il moyen de les afficher ? en effet, si le compte n'est plus habilité à LINK-INTRANET-RESTAURANT, le raccourci reste toujours... 

    A quoi sert cette ligne : oShellLink.WorkingDirectory = "%HOMEPATH%" ?

    --------------------------------------------------------------------------------------------------------------------------------

    Set Shell= Wscript.CreateObject("WScript.Shell")
    Set fso  = WScript.CreateObject("Scripting.FileSystemObject")
    Set fldrs=Shell.SpecialFolders

    Progfolder=fldrs("Programs")
    NewF=Progfolder & "\" & "Liens habilités"
    if not fso.FolderExists(NewF) then set f=fso.CreateFolder(NewF)

    if InGroup("LINK-INTRANET-RESTAURANT") then
    strStartup = WshShell.SpecialFolders("programs")
    set oShellLink = WshShell.CreateShortcut (strStartup & "\Liens habilités\Resto.lnk") Y a t-il moyen de faire un show et non un creat ?
    oShellLink.TargetPath = "C:\DATA$\RESTAURANT\RESTAURANT.TXT"
    oShellLink.WindowStyle = 1
    oShellLink.Hotkey = "Ctrl+Alt+C"
    oShellLink.IconLocation = "%SystemRoot%\system32\calc.exe"
    oShellLink.Description = "Icone du resto"
    oShellLink.WorkingDirectory = "%HOMEPATH%" => à quoi sert cette ligne ?
    oShellLink.Save
    end if


    PASCOOL

    vendredi 2 mars 2012 08:34
  • Quelle est la différence entre ces deux choses ? est-ce que ce n'est pas la même chose ? c'est quoi le Wsh ?

    Set fldrs=Shell.SpecialFolders

    Progfolder=fldrs("Programs")

    - - - et

    strStartup = WshShell.SpecialFolders("programs")


    PASCOOL

    dimanche 4 mars 2012 16:19
  • Le dimanche 04/03/2012 17:19:05, PASCOOL a écrit dans le message <news:3df6ca7e-953f-436b-8f58-505838f72d72@communitybridge.codeplex.com> ce qui suit :

    Quelle est la différence entre ces deux choses ? est-ce que ce n'est pas la même chose ? c'est quoi le Wsh ?

    C'est le nom d'une VARIABLE !


    Set fldrs=Shell.SpecialFolders
    Progfolder=fldrs("Programs")

    - - - et

    strStartup =*Wsh*Shell.SpecialFolders("programs")

    Set Shell= Wscript.CreateObject("WScript.Shell")
    Avec la variable objet "Shell",  je définis une instance de la classe objet "WScript.Shell"

    J'aurais très bien pu l'appeler "Glutzenbaum" ! ;-)
       Set Glutzenbaum=Wscript.CreateObject("WScript.Shell")

    Mais pour être cohérent, j'aurais du écrire :
      Set fldrs=Glutzenbaum.SpecialFolders
     Il faut reconnaitre que "Shell" est plus parlant comme nom de variable!!!! ;-)

    Dans le script que tu cites, on trouve
      strStartup =WshShell.SpecialFolders("programs")
    tout simplement parce que l'auteur a appelé la variable "WshShell"
    (WSH étant l'acronyme de "Windows Script Host")

    Quant à l'instruction
      strStartup =WshShell.SpecialFolders("programs")
    c'est un condensé des 2 instructions :
      Set fldrs=WshShell.SpecialFolders
      strStartup=fldrs("Programs")
     Personnnellement, je préfère la 2ème forme parce que :
    - la progression du traitement est plus explicite
    - on peut utiliser l'objet intermédiaire ("fldrs") pour autre chose
     p.ex.
      strRecent=fldrs("Recent")
     ...
     Enfin, je ferai remarquer que le choix de "strstartup" pour nom de la variable n'est pas des plus heureux, car il prête à CONFUSION!

    EN effet, fldrs("Programs") retourne (p.ex.)
     C:\Users\BELLAMY\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
    c'est-à-dire le menu "programmes" du compte en cours

    de même que fldrs("AllUsersPrograms") retourne (p.ex.)
      C:\ProgramData\Microsoft\Windows\Start Menu\Programs
    c'est-à-dire le menu "programmes" commun à tous les comptes
     Par contre, fldrs("Startup") ou fldrs("AllUsersStartup") retournent respectivement :
     C:\Users\BELLAMY\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
     C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

    qui sont les menus "démarrage"

    Donc, pour être COHÉRENT, il aurait mieux valu écrire :
       strStartup =WshShell.SpecialFolders("Startup")
    ou
      strPrograms=WshShell.SpecialFolders("Programs")
       --
    May the Force be with You!
    La Connaissance s'accroît quand on la partage
    ----------------------------------------------------------
    Jean-Claude BELLAMY [MVP Expert IT Pro]
    http://www.bellamyjc.org  ou http://jc.bellamy.free.fr

    • Marqué comme réponse PASCOOL lundi 5 mars 2012 10:01
    dimanche 4 mars 2012 18:48
  • Merci pour toutes ces infos, j'ai pu finir mon script comme je voullais...

    @ +


    PASCOOL

    lundi 5 mars 2012 10:02