[BAT/VBS] Appeller vbs dans BAT ? + Script print réseau VBS

Appeller vbs dans BAT ? + Script print réseau VBS [BAT/VBS] - VB/VBA/VBS - Programmation

Marsh Posté le 02-02-2006 à 12:36:30    

Hello tout le monde,
 
Petit souci qui se pose... on a reçu une nouvelle imprimante réseau et je dois la mettre chez tous les utilisateurs.
Le premier hic (et oui, cela aurait été trop simple...) c'est que l'imprimante rajoutée ne doit pas être par définie par défaut.
Inhérent à ce problème, en voici un autre qui se pose : la moitié de notre domaine étant en français et l'autre en anglais (dont le DC principal), le format par défaut du papier lorsque tu montes l'imprimante est à "Letter" alors qu'il me le faudrait en A4. Vu que ça ne doit pas être définissable dans un Batch, j'ai alors opté pour le VBS, plus puissant à bien des égards... mais je maîtrise pas le langage  :p  
 
Donc, maintenant faudrait que je puisse appeller ce VBS fraîchement crée via le bat que j'ai déjà dans mon NetLogon (sans ça je dois changer le nom du srcipt dans TOUS les profils users dans AD :heink: )
 
Ça serait vraiment sympa de m'aider sur ce coup-là, merci d'avance à ceux qui prendront 5min.  :jap:  
 
@+ !  :)

Reply

Marsh Posté le 02-02-2006 à 12:36:30   

Reply

Marsh Posté le 02-02-2006 à 14:12:27    

Ton vbs se comporte comme n'importe quel fichier executable, donc il suffit d'écrire son dans le .bat pour qu'il s'execute


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 02-02-2006 à 14:41:39    

Yes, merveilleux ! :D
 
Par contre, j'avais trouvé ça pour l'imprimante :
 
' Printers.vbs - Windows Logon Script.
Set objNetwork = CreateObject("WScript.Network" )  
objNetwork.AddWindowsPrinterConnection "\\nom_serveur\nom_printer"
 
Mais ça me dit pas trop comment faire en sorte que cette imprimante ne soit pas prise par défaut et surtout qu'elle prenne par défaut le format A4 au lieu de Letter.
C'est gentil de m'aider, j'suis vraiment une brêle en prog :lol:

Reply

Marsh Posté le 02-02-2006 à 14:51:17    

là je peux pas trop t'aider, je n'ai jamais touché à la configurationdes imprimantes en VBS ;)
Par contre je te conseille de faire un tour sur la MSDN librairy et sur la page ci dessous, tu devrais trouver ton bonheur:
http://www.microsoft.com/technet/s [...] garch.mspx


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 02-02-2006 à 15:01:07    

Yes, cool ! Merci pour le lien =)
 
Je vais fouiller et j'vous tiens au courant.
 
@+ !

Reply

Marsh Posté le 02-02-2006 à 15:39:30    

J'ai aucune expérience en VBS, j'ai fait un peu de VB.Net aux cours il y a 2 ans bientôt et c'est tout.
Voilà ce que j'ai pondu de mes petits doigts, ça devrait ressembler à quelque chose dans ce goût-là :
 
' Printers.vbs - Windows Logon Script.
Set objNetwork = CreateObject("WScript.Network" )  
objNetwork.AddWindowsPrinterConnection "\\nom_srv\nom_printer"
Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer Where Name = 'ScriptedPrinter'" )
If objPrinter.FormatPaper in colInstalledPrinters = "Letter" Then
objPrinter.FormatPaper = "A4"
End If
 
 
Je suis vraiment pas sûr de mon If... quelqu'un pourrait me donner un coup de main svp ? Ça serait vraiment cool, merci.


Message édité par maille-hem le 02-02-2006 à 15:44:07
Reply

Marsh Posté le 02-02-2006 à 15:45:41    

effectivement, il y a un problème avec ton IF :D  
Tu essaye de faire quoi, j'arrive pas trop à comprendre ...


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 02-02-2006 à 15:51:57    

Ben j'aimerais juste faire en sorte que le format du papier par défaut soit A4 au lieu de Letter, et ce uniquement sur l'imprimante montée par script (il n'y en a qu'une : celle que je veux justement installer)

Reply

Marsh Posté le 02-02-2006 à 15:57:24    

J'ai pu corriger mon IF (et le reste aussi) :
 
' Printers.vbs - Windows Logon Script.
Set objNetwork = CreateObject("WScript.Network" )  
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2" )
objNetwork.AddWindowsPrinterConnection "\\nom_serveur\nom_printer"
Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer Where Name = 'ScriptedPrinter'" )
For each objPrinter in colInstalledPrinters
    Wscript.Echo "Paper: " & _
 objPrinter.Paper
If objPrinter.FormatPaper = "Letter" Then
 objPrinter.FormatPaper = "A4"
End If
next
 
 
Mais le changement du format de papier ne se fait toujours pas :-/

Reply

Marsh Posté le 02-02-2006 à 16:08:58    

t'es sur que la propriété FormatPaper existe ?


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 02-02-2006 à 16:08:58   

Reply

Marsh Posté le 02-02-2006 à 16:15:46    

Ben non justement... et j'ai pas moyen de vérifier ! :-/

Reply

Marsh Posté le 02-02-2006 à 17:29:28    

maille-hem a écrit :

Ben non justement... et j'ai pas moyen de vérifier ! :-/


Vu qu'il n'y en a aucune trace dans la MSDN, je pense que FormatPaper n'existe pas. ça doit être un des attributs de l'imprimante. essaye de lister les attributs de l'imprimante ainsi que leur valeurs pouv oir si tu trouve sle format du papier


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 02-02-2006 à 17:58:56    

Bien, j'ai pu corriger divers éléments du script et en cherchant bien j'ai trouvé la propriété qui m'intéressait. J'ai rebossé le script, ça m'a l'air mieux mais j'ai une erreur à la ligne 12 (FOR) et je vois pas d'où ça vient.
 
' Printers.vbs - Windows Logon Script.
Set objNetwork = CreateObject("WScript.Network" )  
objNetwork.AddWindowsPrinterConnection ("\\serveur\printer" )
Set objPrinter = objNetwork
strComputer = "."
 
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2" )
 
Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_PrinterConfiguration Where Name = '\\serveur\printer'" )
For each objPrinter in colInstalledPrinters
If objPrinter.PaperSize = "1" Then
 objPrinter.PaperSize = "9"
End If
 WScript.Echo "PaperSize: " & objPrinter.PaperSize
next
 
 
Du coup, j'peux pas savoir si le script fonctionne ou pas ....

Reply

Marsh Posté le 02-02-2006 à 18:14:29    

Elle sert à quoi cette ligne ?
Set objPrinter = objNetwork  
 
sinon, je vois pas ce qui merde dans le script. Il te met quoi comme erreur ?


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 03-02-2006 à 13:57:17    

mareek a écrit :

Elle sert à quoi cette ligne ?
Set objPrinter = objNetwork  
 
sinon, je vois pas ce qui merde dans le script. Il te met quoi comme erreur ?


À mettre le contenu de objNetwork dans objPrinter.... non ? Si j'utilise directement objPrinter ça joue direct ?
Bref, après avoir enlevé cette ligne, j'ai ce code d'erreur :
 
Ligne : 11
Caract. : 1
Erreur : 0x80041017
Code : 80041017
Source : (null)
 
 
PS : c'est vraiment sympa de m'aider... chuis trop une brêle en VBS :D

Reply

Marsh Posté le 03-02-2006 à 14:35:55    

Là ça dépasse mes compétences, désolé. Je n'ai jamais fais de scripts WMI et je ne sais pas du tout comment ça marche :/


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 03-02-2006 à 16:40:00    

Okay, merci quand même de t'être penché sur problème :jap:
 
Des amateurs ? :D

Reply

Sujets relatifs:

Leave a Replay

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