IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Amélioration Script pour renommer imprimante


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Amélioration Script pour renommer imprimante
    Bonjour,
    je cherche une solution pour renommer une imprimante RDP grâce au script trouvé ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
    Set colPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer Where DeviceID = 'ANCIEN-NOM-IMP")
     
    For Each objPrinter in colPrinters
    objPrinter.RenamePrinter("NOUVEAU-NOM-IMP")
    Next
    Le script fonctionne ce qui est déja très bien, mais le problème c'est qu'en l'état il faut connaitre le nom exacte de l'imprimante à renommer.
    Or en RDP le nom de l'imprimante partagé change en fonction de l'ID de la session que windows attribue (Plus d'explications sur mon précédent post -> ici)

    Quelqu'un propose une solution avec ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
    Set colPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer Like DeviceID = '%UNE-PARTIE-DE-ANCIEN-NOM-IMP%'")
     
    For Each objPrinter in colPrinters
    objPrinter.RenamePrinter("NOUVEAU-NOM-IMP")
    Next
    Là par contre ça ne fonctionne pas pour moi, j'ai ce message d'erreur :


    Une idée ?

    [EDIT]

    Problème résolu -> Voir post #11

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 099
    Points : 16 609
    Points
    16 609
    Par défaut
    Salut

    Il me semble bien que le égal (=) pour un Like ne doit pas être mis dans la requête.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    C'est à dire ? J’enlève tout simplement le "=" après le "DeviceID" ?

  4. #4
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 099
    Points : 16 609
    Points
    16 609
    Par défaut
    Oui, en tout cas à essayer, car pour une requête SQL il ne le faut pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set colPrinters = objWMIService.ExecQuery("Select * from Win32_Printer DeviceID Like '%UNE-PARTIE-DE-ANCIEN-NOM-IMP%'")

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Toujours pareil, j'ai la même erreur.

  6. #6
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Bonjour,

    Pour moi le problème ne vient pas de la structure de la requête WMI, car si c'était le cas tu ne rentrerais pas dans le For Each.

    Combien d'imprimantes s'affichent lorsque tu lances ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
    Set colPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer Like DeviceID = '%UNE-PARTIE-DE-ANCIEN-NOM-IMP%'")
     
    For Each objPrinter in colPrinters
      WScript.Echo objPrinter.DeviceID 
      ' objPrinter.RenamePrinter("NOUVEAU-NOM-IMP")
    Next
    Si il y en a plus d'une, le problème peut venir de là. Il faudra alors affiner ta requête WMI pour n'avoir que l'imprimante à renommer.
    Si il n'y en a qu'une, alors je fais fausse piste.

    Bonne continuation

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Toujours le même message d'erreur, je ne sais pas du tout d'où cela peut venir.
    De plus je ne m'y connais pas en code alors ça n’arrange rien

  8. #8
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Désolé, je n'avais pas les yeux en face des trous, la requête WMI n'est effectivement pas bonne. Essaie comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer Where DeviceID Like '%UNE-PARTIE-DE-ANCIEN-NOM-IMP%'")
    For Each objPrinter in colPrinters
      WScript.Echo objPrinter.DeviceID 
      ' objPrinter.RenamePrinter("NOUVEAU-NOM-IMP")
    Next
    Meilleur résultat?

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    en effet, du mieux,

    J'explique :
    J'ai appelé mon imprimante "IMP TEST"

    voila mon script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer Where DeviceID Like '%TEST%'")
    For Each objPrinter in colPrinters
      WScript.Echo objPrinter.DeviceID 
      ' objPrinter.RenamePrinter("IMP-RDP")
    Next
    lorsque j’exécute le code, cela m'afiche bien "IMP TEST" dans la fenetre "Windows Script Host".
    J'en conclue que cette partie du code fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set colPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer Where DeviceID Like '%TEST%'")
    Mais toujours pas de renommage.

  10. #10
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Euh tu as bien enlevé le commentaire pour renommer ton imprimante ou pas?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer Where DeviceID Like '%TEST%'")
    For Each objPrinter in colPrinters
      WScript.Echo "Renommage de l'imprimante <" & objPrinter.DeviceID & "> en <IMP-RDP>"
      objPrinter.RenamePrinter("IMP-RDP")
    Next
    Sinon quel est ton message d'erreur ? c'est toujours le même?

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup, cela fonctionne très bien.
    J'ai ajouté un apostrophe devant le "WScript.Echo" afin de ne pas avoir de message de confirmation, comme ça tout est transparent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer Where DeviceID Like '%UNE-PARTIE-DE-ANCIEN-NOM-IMP%'")
    For Each objPrinter in colPrinters
      ' WScript.Echo "Renommage de l'imprimante <" & objPrinter.DeviceID & "> en <NOUVEAU-NOM-IMP>"
      objPrinter.RenamePrinter("NOUVEAU-NOM-IMP")
    Next
    Dernière question,
    comment ajouter à la fin du script le lancement de mon programme.

    En gros le script fait :
    1 -> trouve moi l'imprimante qui contient le mot " toto " et renomme la en " tata "
    2 -> ensuite lance le raccourci du programme situé dans C:\***.lnk

    je précise que j'ai besoin d’exécuter directement un .lnk car je dois conserver des propriétés dans le raccourci du programme.

    [EDIT]
    Bon finalement, je suis passé par un batch pour exécuter mon .vbs puis mon .lnk.
    J'ai juste la fenêtre DOS en arrière plan pendant quelques secondes, c'est moins esthétique pour mon client, mais c'est fonctionnel. De plus je ne sais pas si l'on peux lancer un .lnk en .vbs.

    Tout est ok pour moi, cela fonctionne comme je souhaitai.
    Grand merci pour l'aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 09/01/2019, 21h23
  2. Besoin d'aide : Script pour renommer imprimante par défaut
    Par ryohazuki100 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 01/08/2013, 10h37
  3. Script pour renommer une double extension
    Par squiln0x dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 10/01/2012, 21h11
  4. script pour choisir imprimante
    Par guizmo35 dans le forum VBScript
    Réponses: 11
    Dernier message: 26/05/2009, 09h11
  5. Réponses: 6
    Dernier message: 22/09/2008, 14h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo