Script installation imprimantes sur un serveur d'impression en VBS

Résolu
kuruma7 Messages postés 3 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 27 février 2009 - 26 févr. 2009 à 14:42
kuruma7 Messages postés 3 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 27 février 2009 - 27 févr. 2009 à 16:24
Bien le bonjour messieurs les développeurs ! (et mesdames les développeuses )


Je suis actuellement en stage afin de préparer mon BTS Informatique de
Gestion option Administrateur Réseau et je ne suis pas très bon en
développement.

Voila mon problème : j'ai pour le moment un script DOS, qui appel des scripts VBS
(prncnfg.vbs, prnmgnr.vbs qui se trouvent dans C:\windows\system32 pour
ceux qui connaissent) avec paramètres, qui installe une liste
d'imprimantes sur un serveur d'impression. Or, ce script doit faire
quelques milliers de lignes et ce n'est donc pas pratique d'y ajouter
une imprimante supplémentaire. Je précise que j'ai créé le script à
l'aide du publipostage Word et d'un fichier Excel.

J'ai donc créé un script VBS qui permet de parcourir un fichier
Excel et d'installer les imprimantes grâce aux infos renseignées dans
ce fichier et aux scripts VBS. Le fichier Excel contient le nom de l'imprimante en colonne A, le nom de partage en colonne B, le nom du pilote en C, l'adresse IP en E et le numéro de port en F.

Voila le script :

Dim objExcel, objSpread
Dim nom_partage, nom_imprimante, nom_pilote, adresse_ip, num_port
Dim numligne
nom_partage = ""
nom_imprimante = ""
nom_pilote = ""
adresse_ip = ""
num_port = ""
numligne = 2

Set objExcel = CreateObject("Excel.Application" )
Set objSpread = objExcel.Workbooks.Open("C:\Imprimantes.xls")
objExcel.Visible = True

Do While objExcel.Cells(numligne,1) <> ""
    nom_imprimante = objExcel.Cells(numligne,1).Value
    nom_partage = objExcel.Cells(numligne,2).Value
    nom_pilote = objExcel.Cells(numligne,3).Value
    adresse_ip = objExcel.Cells(numligne,5).Value
    num_port = objExcel.Cells(numligne,6).Value

    set WshShell = createObject("WScript.shell")
    Wshshell.Run "cscript.exe" & " C:\WINDOWS\system32\prnport.vbs -a -r IP_" & adresse_ip & " -h " & adresse_ip & " -o raw -n " & num_port & " -md"
    set WshShell = createObject("WScript.shell")
    Wshshell.Run "cscript.exe" & " C:\WINDOWS\system32\prnmngr.vbs -a -p " & nom_imprimante & " -m " & nom_pilote & " -r IP_" & adresse_ip
    set WshShell = createObject("WScript.shell")
    Wshshell.Run "cscript.exe" & " C:\WINDOWS\system32\prncnfg.vbs -t -p " & nom_imprimante & " -r IP_" & adresse_ip & " -h " & nom_partage & " +shared" '" +published"

    numligne = numligne +1
Loop

objExcel.Quit
set objexcel=nothing
Wscript.Echo "L'installation des Imprimantes s'est terminée correctement"
WScript.Quit

Mais il y a une ligne qui ne marche pas et je ne comprends pas pourquoi, car d'autres lignes quasiment identiques marchent parfaitement.
Il s'agit de cette ligne la :

Wshshell.Run "cscript.exe" & " C:\WINDOWS\system32\prnmngr.vbs -a
-p " & nom_imprimante & " -m " & nom_pilote & " -r IP_"
& adresse_ip

Quelqu'un verrai-t-il ou est mon erreur ?

Merci d'avance pour vos réponses.

2 réponses

kuruma7 Messages postés 3 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 27 février 2009
26 févr. 2009 à 16:52
J'ai peut-être trouvé pourquoi ma ligne ne marche pas, mais je ne suis pas sur que ce soit ça et surtout je ne sais pas comment résoudre ça.

Ma variable "nom_pilote" est composée d'espaces, ce qui gênerai l'exécution du script.
Qu'en pensez-vous ? Et comment pourrai-je résoudre ça ?

Merci.
3
kuruma7 Messages postés 3 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 27 février 2009
27 févr. 2009 à 16:24
Ça y est, j'ai trouvé la solution !!

Je pense que c'est en essayant de l'expliquer que j'ai réussi a trouver par moi même. Donc merci le forum quand même !
Voila la "solution" pour ceux que ça intéresse, il fallait remplacer cette ligne :

nom_pilote =objExcel.Cells(numligne,3).Value

Par celle-ci :

nom_pilote = Chr(34) & objExcel.Cells(numligne,3).Value & Chr(34)

Pour que la variable (contenant des espaces) soit affichée entre guillemets. Ainsi le script s'exécute.

A plus
3
Rejoignez-nous