! UP ! VBScript Changer une imprimante par défaut grâce à son IP

! UP ! VBScript Changer une imprimante par défaut grâce à son IP - VB/VBA/VBS - Programmation

Marsh Posté le 09-03-2016 à 16:11:28    

Salutations j'aimerai avoir votre assistance!!
 
Actuellement j'essai de faire un script vbs avec ce que je trouve à droite et à gauche pour pouvoir comme cité dans le titre, de changer une imprimante par défaut grâce à son adresse IP.
La société dans laquelle je suis en stage souhaite que je mettes en place un serveur d'impression et que les imprimantes déjà par défaut sur les postes
restent après la mise en place du serveur d'impression.
Mon problème étant que mon serveur d'impression est opérationnel avec toutes les imprimantes réseaux mais je voudrais automatiser le déploiement grâce à un script qui aurait pourrait changer  
l'imprimante par défaut par la même mais qui passe par le serveur d'impression.
 
J'ai eu une idée de début de script mais plusieurs problèmes survient  :ouch:  

Code :
  1. strComputer = "."
  2.     Set objWMIService = GetObject("winmgmts:" _
  3.         & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2" )
  4.     Set colInstalledPrinters =  objWMIService.ExecQuery _
  5.         ("Select * from Win32_Printer" )
  6. 'Définir une imprimante comme imprimante par défaut :
  7. Dim net
  8. Set net = CreateObject("WScript.Network" )
  9. For Each objPrinters in colInstalledPrinters
  10. Next
  11. if objPrinter.PortName = "X.X.X.1" AND objPrinter.Default = true then
  12. net.SetDefaultPrinter "\\SERVEURIMPRESSION\NOMIMPRIMANTE"
  13. Elseif objPrinter.PortName = "X.X.X.2" AND objPrinter.Default = true then
  14. net.SetDefaultPrinter "\\SERVEURIMPRESSION\NOMIMPRIMANTE2"
  15. ....
  16. Else objPrinter.PortName = "X.X.X.X" AND objPrinter.Default = true then
  17. net.SetDefaultPrinter "\\SERVEURIMPRESSION\NOMIMPRIMANTEX"
  18. End If


 
 
Merci pour vos solutions !!


Message édité par drayaina le 25-03-2016 à 11:03:44
Reply

Marsh Posté le 09-03-2016 à 16:11:28   

Reply

Marsh Posté le 10-03-2016 à 08:41:43    

Salut,
 
Et quels sont les problèmes rencontrés ?
 
Parce que sans problème expliqué, point de solution à attendre ! :pt1cable:

Reply

Marsh Posté le 10-03-2016 à 09:05:47    

Salut :)  
Le problème que je rencontre actuellement c'est une erreur à la ligne 16 (if objPrinter.PortName = "X.X.X.1" AND objPrinter.Default = true then) qui me dit :
erreur : Orbjet requis :'objPrinter'
Code: 800A01A8
J'ai modifier la ligne 12 en retirant le s de Printer mais ça ne change pas grand chose :/

Reply

Marsh Posté le 10-03-2016 à 13:16:20    

Ton Next est mal placé !
 
C'est l'instruction de fin du For Each et il est juste après, donc les lignes à partir de if objPrinter sont hors du For ... Next.
 
Déplace ton instruction Next juste après le End if et ca devrait mieux marcher.
 
Par la même occasion, pense à mettre ton code entre balises cpp/cpp ce sera plus lisible.

Reply

Marsh Posté le 10-03-2016 à 14:19:04    

Yeeey ça marche merci !! Mais maintenant il me dit à la ligne 26 "Fin d'instruction attendue" si tu peux encore m'aider sur ce coup... :3


Message édité par drayaina le 10-03-2016 à 14:30:14
Reply

Marsh Posté le 10-03-2016 à 15:17:06    

Petite modification apporté au script mais un problème reste encore pour m'embêter :fou:  Il m'indique qu'il y a un 'Next' qui est attendu :/
 

Code :
  1. strComputer = "."
  2.     Set objWMIService = GetObject("winmgmts:" _
  3.         & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2" )
  4.     Set colInstalledPrinters =  objWMIService.ExecQuery _
  5.         ("Select * from Win32_Printer" )
  6. 'Définir une imprimante comme imprimante par défaut :
  7. Dim net
  8. Set net = CreateObject("WScript.Network" )
  9. For Each objPrinters in colInstalledPrinters
  10. if objPrinters.PortName = "X.X.X.1" AND objPrinters.Default = true then
  11.  net.SetDefaultPrinter "\\SERVEURIMPRESSION\NOMIMPRIMANTE1" 
  12.  Elseif objPrinters.PortName = "X.X.X.2" AND objPrinters.Default = true then
  13.   net.SetDefaultPrinter "\\SERVEURIMPRESSION\NOMIMPRIMANTE2"
  14.  End If
  15.  Else
  16.  If objPrinters.PortName = "X.X.X.X" AND objPrinters.Default = true then
  17.   net.SetDefaultPrinter "\\SERVEURIMPRESSION\NOMIMPRIMANTEX"
  18.  End If
  19. End If
  20. Next


Message édité par drayaina le 10-03-2016 à 15:18:11
Reply

Marsh Posté le 10-03-2016 à 15:39:14    

Bonjour,
 
Le "Else" à ligne 20 ne sert à rien, tout comme le "End If" ligne 24.


---------------
Configurations type du moment : https://forum.hardware.fr/hfr/Hardw [...] 1331_1.htm  https://www.jouannetphotographe.com
Reply

Marsh Posté le 10-03-2016 à 15:43:22    

Oui en fait je viens de voir que j'ai mis des End If après chaque Elseif et du coup cela me gênais pour la suite, après j'ai laissé le Else à la fin mais ça fonctionne quand même donc je vais le laisser :p Merci !

Reply

Marsh Posté le 11-03-2016 à 08:18:47    

:hello:

Reply

Marsh Posté le 25-03-2016 à 11:01:24    

:bounce:  
Jourbon ! Petit up pour un petit problème perçu aujourd'hui...
Je m'explique ... Le script pour changer l'imprimante par défaut fonctionne à merveille sauf que lorsque je redémarre le poste, l'imprimante par défaut revient à l'imprimante initiale... :kaola:  
J'ai un second script qui permettrait de supprimer les imprimantes hors serveur d'impression mais en faisant mon jeu d'essai je me suis rendu compte que pour les postes sur lesquelles il y a deux utilisateurs les imprimantes par défaut changées ne restent pas appliquée.... :pfff:  
 
Dans mon jeu d'essai, deux utilisateurs utilisant le même postes avec deux sessions différentes ainsi que des imprimantes par défaut différentes doit être appliqué.
 
Le problème étant que lorsque je me connecte sur la première session, le script change bien l'imprimante par défaut... et lorsque je change de session le script s'applique aussi... Donc là tout va pour le mieux... C'est après que ça se corse :/ lorsque je retourne sur la première session l'imprimante par défaut s'est "réinitialisé" en celle que j'avais avant que le script ne s'applique.... et c'est pareil pour l'autre session... Bon après le script s'applique derrière mais bon c'est pas top pour mon second script qui doit supprimer toutes les imprimantes hors serveur d'impression qui sont présente sur le poste car après la seconde session n'aura plus l'imprimante par défaut initiale pour la basculer sur le serveur d'impression et elle va affecter la première imprimante venue .... :heink:  
 
J'aimerais que l' imprimante définit en imprimante par défaut reste active POUR TOUJOURS MWAHAHAH :pt1cable:  ... Hum hum ... Enfin qu'elle reste active malgré le changement d'utilisateurs.
 
Merci pour vos lumières !


Message édité par drayaina le 25-03-2016 à 11:02:39
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed