Page 1 sur 2
Installation silencieuse d'imprimantes
Posté : ven. 20 janv. 2017 16:09
par Gobaltann
Bonjour !
Je vous explique le truc.
En gros, je suis actuellement en "stage", et j'ai à apprendre l'AutoIt ( je n'en ai jamais fais avant ).
Mon maitre de stage me demande d'automatiser les installations de toutes les imprimantes, mais le problème c'est qu'il faut qu'elles soit silencieuses.
Ayant déjà fait des installations silencieuses ( ThunderBird , 7zip, VirtualBox ... ) je me rend compte qu'il y a un problème ( de mon point de vue ! )...
Le script composer uniquement de "Send" et de "Sleep", je ne sais pas comment cacher les pages.
C'est assez contraignant.
Avez vous une solution ? Au besoin j'y ajouterais le script, mais sachant qu'il n'y a que des "Send" et "Sleep" je n'en vois pas l'utilité.
Merci pour vos réponses !
Re: Installation silencieuse d'imprimantes
Posté : ven. 20 janv. 2017 19:25
par jguinch
Quel type d'installation veux-tu effectuer :
- installation "locale" avec création d'un port TCP/IP ?
- installation "imprimante partagée" avec un serveur d'impression qui contient les partages d'imprimantes ?
La difficulté n'est pas la même en fonction de la réponse.
De quelle façon sera exécuté le script :
- dans la session de l'utilisateur, avec des droits limités ?
- avec un compte admin ?
Regarde du côté de l'UDF
Printers Management, qui devrait te permettre de faire tout ce que tu veux.
Re: Installation silencieuse d'imprimantes
Posté : sam. 21 janv. 2017 10:24
par jl56
Bonjour,
Sous Xp j'avais un script qui fonctionnais bien en mode silencieux
Dans un de mes scripts j'utilise pour cela rundll32 printui.dll,PrintUIEntry ......
Code : Tout sélectionner
RunWait('rundll32 printui.dll,PrintUIEntry /q /Sr /n "'&$nom_imprimante&'" /a "'&$nomdufichierparametrage&'" 2 7 c d g m u'
exécute cette commande et vous aurez toute la syntaxe
rundll32 printui.dll,PrintUIEntry /?
Enregistrer tous les paramètres de l'imprimante dans un fichier :
rundll32 printui.dll,PrintUIEntry /Ss /n "imprimante" /a "fichier.dat"
Enregistrer tous les paramètres de l'imprimante à partir d'un fichier :
rundll32 printui.dll,PrintUIEntry /Sr /n "imprimante" /a "fichier.dat"
pour créer un port IP j'utilise un vbs (prnport.vbs) déjà présent sur le système
je lance ce vbs comme ceci exemple.
Code : Tout sélectionner
Run("cscript "&@SystemDir&"\prnport.vbs -a -r "&$nomport&" -h "&$adresseipport&" -o raw -n "&$numeroduport[$p]&$option,"",@SW_HIDE)
recherchez les *.VBS editer le prnport.vbs pour avoir des précisions sur la saint axe ( priez pour nous )
A+ JL56
Re: Installation silencieuse d'imprimantes
Posté : lun. 23 janv. 2017 09:12
par Gobaltann
Merci pour vos réponses,
J'ai a installer des imprimantes locales en utilisant un port LPR.
jl56, si j'ai bien compris, ton script permet un ajout d'imprimante par leur adresse IP non ?
Le problème c'est que moi, j'ai a installer des imprimantes locales par port LPR(donc il n'est jamais demandé l'adresse IP de l'imprimante

), je dois choisir les drivers sur un espace de partage.
Je viens de revenir ce matin en stage, je vais donc me pencher là dessus.
Merci tout de même !
Re: Installation silencieuse d'imprimantes
Posté : lun. 23 janv. 2017 12:21
par jguinch
A moins que je comprenne mal, le port LPR est un port TCP/IP configuré pour utiliser le mode LPR (au lieu de RAW)
Donc il faudra bien connaitre l'adresse IP ou le nom DNS de l'imprimante, non ?
Re: Installation silencieuse d'imprimantes
Posté : lun. 23 janv. 2017 13:54
par Gobaltann
Voila le code utiliser, il faut l'adresse du serveur LPD, c'est surement de ça que tu me parles non ?
Re: Installation silencieuse d'imprimantes
Posté : lun. 23 janv. 2017 20:20
par jl56
Bonjour à tous,
Non pas forcement
Pour une installation et surtout une installation silencieuse
tu oublies absolument les send et les sleep de bain
► Afficher le texte
If $msg = $menu_suppression_imp_sur_ce_poste[$iip] and $msg>0 Then $answer = MsgBox(4, " Valider le choix ", " Vouler vous vraiment supprimer l'imprimante (1 minute)"&@CRLF
&" "&$imprimantes_sur_ce_poste[$iip-1]&@CRLF
&" de ce poste ?") If $answer = 7 Then else ;purge de la file d'impression $strComputer = "localhost" $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2") $colPrintJobs = $objWMIService.ExecQuery ("Select * from Win32_Printer Where Name = '"&$imprimantes_sur_ce_poste[$iip-1]&"'") For $objPrinter in $colPrintJobs $objPrinter.CancelAllJobs() Next ;~ MsgBox(4096,"","suppression "&$imprimantes_sur_ce_poste[$i-1]) RunWait("rundll32 printui.dll,PrintUIEntry /dl /n "&chr(34)&$imprimantes_sur_ce_poste[$iip-1]&chr(34)&" /q") test_desinstall_imp
($imprimantes_sur_ce_poste[$iip-1]);~ GUICtrlDelete($liste_imp_menu_sur_ce_poste);~ $liste_imp_menu_sur_ce_poste = GuiCtrlCreateMenu ("Liste imprimantes");~ Sleep(500) MsgBox(4, " Suppression OK ", " L'imprimante "&@CRLF
&" "&$imprimantes_sur_ce_poste[$iip-1]&@CRLF
&" est bien supprimée",20) liste_imp_et_port_sur_ce_poste
() EndIf EndIf If $msg = $menu_par_default_sur_ce_poste[$iip] and $msg>0 Then;~ MsgBox(4096,"","par default "&$imprimantes_sur_ce_poste[$i-1]) RunWait("rundll32 printui.dll,PrintUIEntry /y /n "&chr(34)&$imprimantes_sur_ce_poste[$iip-1]&chr(34)&" /q") EndIf If $msg = $menu_test_imp_sur_ce_poste[$iip] and $msg>0 Then;~ MsgBox(4096,"","par default "&$imprimantes_sur_ce_poste[$i-1]) RunWait("rundll32 printui.dll,PrintUIEntry /k /n "&chr(34)&$imprimantes_sur_ce_poste[$iip-1]&chr(34)&" /q") EndIf If $msg = $menu_propriete_imp_sur_ce_poste[$iip] and $msg>0 Then;~ MsgBox(4096,"","par default "&$imprimantes_sur_ce_poste[$i-1]) RunWait("rundll32 printui.dll,PrintUIEntry /p /n "&chr(34)&$imprimantes_sur_ce_poste[$iip-1]&chr(34)&" /q") EndIfif $activationcomptalpr[$p]="oui" then $option=$option&" -2e" ;~ MsgBox(0,"dans lpr "&$typeport[$p],"cscript "&@SystemDir&"\prnport.vbs -a -r "&$nomporta[$p]&" -h "&$adresseipport[$p]&" -o lpr -q "&$nomdelafile[$p]) Runwait("cscript "&@SystemDir
&"\prnport.vbs -a -r "&$nomporta[$p]&" -h "&$adresseipport[$p]&" -o lpr -q "&$nomdelafile[$p]&$option,"",@SW_HIDE) Else ;~ MsgBox(0,"dans raw "&$typeport[$p],"cscript "&@SystemDir&"\prnport.vbs -a -r "&$nomporta[$p]&" -h "&$adresseipport[$p]&" -o raw -n "&$numeroduport[$p]&$option) Run("cscript "&@SystemDir
&"\prnport.vbs -a -r "&$nomporta[$p]&" -h "&$adresseipport[$p]&" -o raw -n "&$numeroduport[$p]&$option,"",@SW_HIDE) EndIf
Je te donnes quelques lignes de code de mon vieux script,
elles ne sont pas fonctionnelles en l'état
regarde la syntaxe des lignes rundll32 printui.dll,PrintUIEntry et leur usage ainsi que les lignes \prnport.vbs
Compare avec l'aide en exécutant la ligne rundll32 printui.dll,PrintUIEntry /?
recherchez les *.VBS editer le prnport.vbs pour avoir des précisions sur syntaxe
A+
JL56
Re: Installation silencieuse d'imprimantes
Posté : mer. 25 janv. 2017 14:10
par Gobaltann
Je suis peux être un peu idiot, mais je ne comprends pas réellement la syntaxe et l'utilisation de "Runwait("cscript "&@SystemDir&"\prnport.vbs"
Quelqu'un aurait un "tuto" permettant de mieu comprendre ?
Je n'en trouve pas...
Re: Installation silencieuse d'imprimantes
Posté : mer. 25 janv. 2017 23:03
par jl56
Bonjour à tous,
je t'ai donné le chemin il faut éditer le fichier prnport.vbs
tu trouveras au début du fichier le mode d’emploi de la commande
► Afficher le texte
'----------------------------------------------------------------------
'
' Copyright (c) Microsoft Corporation. All rights reserved.
'
' Abstract:
' prnport.vbs - Port script for WMI on Windows
' used to add, delete and list ports
' also for getting and setting the port configuration
'
' Usage:
' prnport [-adlgt?] [-r port] [-s server] [-u user name] [-w password]
' [-o raw|lpr] [-h host address] [-q queue] [-n number]
' [-me | -md ] [-i SNMP index] [-y community] [-2e | -2d]"
'
' Examples
' prnport -a -s server -r IP_1.2.3.4 -e 1.2.3.4 -o raw -n 9100
' prnport -d -s server -r c:\temp\foo.prn
' prnport -l -s server
' prnport -g -s server -r IP_1.2.3.4
' prnport -t -s server -r IP_1.2.3.4 -me -y public -i 1 -n 9100
'
'----------------------------------------------------------------------
' Examples
' prnport -a -s server -r IP_1.2.3.4 -e 1.2.3.4 -o raw -n 9100
ce n'est pas du code autoit ç a fait partie du system windows
pour executer cette commande via autoit
tu codes ceci
Runwait("cscript "&@SystemDir
&"\prnport.vbs -a -r IP_1.2.3.4 -h 1.2.3.4 -o raw -n 9100",@SW_HIDE)
Runwait permet d'executer une commande et d'attendre la fin de son execution
@WindowsDir donne le Chemin vers le dossier Windows.
cscript est un programme du system de windows pour exécuter des scripts VBS
en cliquant sur le runwait tu tapes sur la touche F1 pour obtenir l'aide associé
► Afficher le texte
RunWait
Exécute un programme externe et interrompt l'exécution du script jusqu'à ce que le programme se termine.
RunWait ( "program" [, "workingdir" [, show_flag [, opt_flag]]] )
Paramètres
program Le chemin d'accès complet du programme (EXE, BAT, COM, ou PIF) pour exécuter (Voir Remarques).
workingdir [optionnel] Le répertoire de travail. Vide ("") utilise le répertoire de travail courant. Ce n'est pas le chemin du programme.
show_flag [optionnel] Le drapeau "mode d'affichage" du programme exécuté :
@SW_HIDE = Fenêtre cachée (ou mot-clé Default)
@SW_MINIMIZE = Fenêtre réduite
@SW_MAXIMIZE = Fenêtre maximisée
opt_flag [optionnel] Options diverses liées à la façon dont les processus parent-enfant inter-agissent.
0x10000 ($RUN_CREATE_NEW_CONSOLE) = Le processus de la console de l'enfant doit être créé avec sa propre fenêtre au lieu d'utiliser la fenêtre des parents. Ce drapeau n'est utile que lorsque le parent est compilé comme une application console.
Valeur de retour
Mes exemples inclu des variables propres a mon script
Documente toi
https://openclassrooms.com/courses/la-p ... vec-autoit
La programmation avec Autoit Par Timothée Malossane (timmalos) membre de ce forum
https://user.oc-static.com/pdf/228547-l ... autoit.pdf
A+
JL56
Re: Installation silencieuse d'imprimantes
Posté : mar. 31 janv. 2017 11:19
par Gobaltann
Bonjour a tous !
Afin de fignoler mon script il me faudrait le ""raccourcie"" pour "Ajouter une imprimante", la derniere fois je l'ai trouvé par hasard, mais après 3h de recherche ( ce matin ), je ne retombe pas dessus, avez vous une idée ?
Merci !
De souvenir c'était genre Run('rundll32 printui.dll'), mais je ne trouve vraiment plus.
Re: Installation silencieuse d'imprimantes
Posté : mar. 31 janv. 2017 15:05
par jguinch
Est-ce que tu peux nous décrire la façon dont tu installes l'imprimante manuellement (quand tu passes par "Ajouter une imprimante"). Quelles options choisis-tu ? A quel moment renseignes-tu le serveur LPR ?
Utiliser l'interface graphique sera casse-gueule, c'est la dernière des solutions à envisager. La première piste à explorer est du côté de ce qu'a énoncé jl56. Je te conseille d'éplucher la doc de
PrintUI.
Je t'avais donné un lien dans ma première réponse. Ce lien contient tout le nécessaire pour installer une imprimante, un port et des pilotes avec des fonctions AutoIt, sans faire appel à des programmes externes. La page contient également des exemples. Si tu nous décris précisément les étapes d'installation, on pourra t'aider à avancer.
Re: Installation silencieuse d'imprimantes
Posté : mar. 31 janv. 2017 15:37
par Gobaltann
La façon est la suivante :
"Ajouter une imprimante" => "Locale" => "Créer un nouveau port" => "LPR Port" => Je rempli le LPD et le nom de l'imprimante => "Disque fourni..." => "Chemin" => "Ok" => "Suivant" => "Suivant" => "NomDeL'imprimante" => "Suivant" => "Ne Pas Partager" => "Suivant" => "Terminer"
Et voila.
(Je sais pas si c'était réellement ça que tu me demandais.)
Du coup, j'ai tout fais a base de Sleep et de send, tout ça est "Camouflé" par un ecran de "veille" qui annonce un "mise à jours".
Le problème c'est que pour accèder a "Ajouter une imprimante" , je me dois d'aller dans le menu démarrer, et je trouve pas ça esthétique du tout.
Dès le début je choisie "LPR".
Je voulais utiliser le PrintUI, mais le problème c'est qu'avec le Port LPR , je n'y arrive pas. la syntaxe m'avait l'air bonne pourtant ( pendant un élan de rage, j'ai supprimé tout les scripts qui ne fonctionnait pas).
Je vais ré-essayer sous ligne de commande, mais le probleme c'est qu'il faut pouvoir choisir le driver, et je n'ai pas trouvé en PrintUI.
Re: Installation silencieuse d'imprimantes
Posté : mar. 31 janv. 2017 18:49
par jguinch
Effectivement, la création d'un port LPR n'est pas prévu dans les outils Microsoft, que ce soit avec prnport.vbs ou avec PrintUi.
Je vais ajouter la fonctionnalité à mon UDF. Si j'ai le temps je le fais ce soir, sinon demain.
Pour moi, il faudra procéder de cette façon
- Création du port LPR
- Installation du pilote
- Installation de l'imprimante
A priori ça devrait être assez simple. Je reviens vers toi pour te fournir la fonction de création de port LPR.
Re: Installation silencieuse d'imprimantes
Posté : mar. 31 janv. 2017 21:53
par jguinch
Voilà, c'est fait, l'UDF est modifié.
Tu peux télécharger la nouvelle version :
https://www.autoitscript.com/forum/topi ... ement-udf/
Voilà le code à utiliser pour la création du port LPR :
Ensuite, il faudra installer les pilotes puis l'imprimante (regarde les exemples que j'ai mis dans le lien).
Re: Installation silencieuse d'imprimantes
Posté : mer. 01 févr. 2017 09:27
par Gobaltann
Merci !
Je me met tout de suite au travail, j'essaye l'UDF !
J'ai déjà un soucis, c'est peut être un problème de compréhension de la syntaxe ( surement ), mais je n'arrive pas a installer l'imprimante.
Le port est bien créé, mais l'imprimante n'apparait pas dans la liste des imprimantes disponibles.
#RequireAdmin#Include "PrintMgr.au3"_Printmgr_AddLPRPort
("******.****.fr", "test5")_PrintMgr_AddPrinterDriver
("XEROX-7835", "Windows NT x86", @scriptDir & "\XEROX-7835", @scriptDir & "\XEROX-7835\xerox7835_ppd.inf")_PrintMgr_AddPrinter
("test5", "XEROX-7835", "******.****.fr:test5")
D'après moi, cela devrait suffire non ?
On créer le port, on installe le pilote et on installe l'imprimante ? Ai-je fais une "bêtise"? :c
Je continu de chercher en attendant une quelconque réponse.
Re: Installation silencieuse d'imprimantes
Posté : mer. 01 févr. 2017 12:42
par jguinch
Il faut t'assurer que l'installation du pilote s'est bien effectuée (exécute printmanagement.msc dans Windows, ou Panneau de config.\Outils d'administration\Gestion de l'impression)
Attention, si tu utilises une machine 64 bits, il faut utiliser "Windows x64" à la place de "Windows NT x86" avec _PrintMgr_AddPrinterDriver
Re: Installation silencieuse d'imprimantes
Posté : mer. 01 févr. 2017 14:16
par Gobaltann
Comme un idiot, je m'étais trompé dans le nom du pilote, ça ne pouvais pas marcher du coup !
C'est désormais fonctionnel , merci !
Re: Installation silencieuse d'imprimantes
Posté : ven. 03 févr. 2017 10:13
par Gobaltann
Bonjour bonjour ! C'est encore moi !
Lors de l'installation, sur les machines possédant déjà le driver d'installé (Avec les tests fait précédemment), cela fonctionne niquel !
Mais...
(Et oui, y a un "MAIS")
Sur les nouvelles machines ca ne marche pas, et quand j'essaye d'installer les drivers a la main , une sécurité windows me bloque.
"Windows ne peut pas vérifier l'éditeur de ce pilote".
Comment je peux contourner ça ? me balader dans le regedit ? (Je sais pas faire du coup, j'vais pas y aller a l'aveugle :p )
Re: Installation silencieuse d'imprimantes
Posté : lun. 20 févr. 2017 16:56
par sapass
Si tu a cet avertissement de windows c'est que tu essaye d'installer un pilote non signé WHQL. Essaye d'utiliser un pilote signé ça devrait éviter cet avertissement de sécurité.
PS : Ton script est-il bien lancé en admin ?
Re: Installation silencieuse d'imprimantes
Posté : jeu. 04 mai 2017 15:37
par Ellyraa
Bonjour,
Je relance le sujet car je dois faire le même travail que Gobaltann, j'ai voulu utilisé cette solution :
Code : Tout sélectionner
#RequireAdmin
#Include "PrintMgr.au3"
_Printmgr_AddLPRPort("******.****.fr", "test5")
_PrintMgr_AddPrinterDriver("XEROX-7835", "Windows NT x86", @scriptDir & "\XEROX-7835", @scriptDir & "\XEROX-7835\xerox7835_ppd.inf")
_PrintMgr_AddPrinter("test5", "XEROX-7835", "******.****.fr:test5")
mai je n'arrive pas à savoir ou trouver les paramètres 2 et 3 de :
_PrintMgr_AddPrinterDriver("le nom qu'on veut donner au driver", "le chemin vers le .exe ? ", "ou trouver le fichier .inf ? ")
Cordialement Ellyra