Script VBS controle imprimante

Hello tous le monde,

Je tiens à vous prévenir d’avance que je viens de commencer (2jours) à créer des scripts et j’utilise l’application VBS Factory. En résumé je suis un débutant de chez débutant…

Voilà mon problème, je veux utiliser la méthode "EnumPrinterConnections" pour pouvoir controler toutes les imprimantes installées sur mon réseau.

Par exemple je veux juste qu’il m’affiche à l’écran les imprimantes connectées au réseau, je tape le code suivant : (suite après le code)

Option Explicit

    Dim Wshnet, MapPrinters
    Set WshNet = CreateObject("WScript.Network")
    Set MapPrinters = WshNet.EnumPrinterConnections

WScript.Echo MapPrinters

Logiquement il devrait s’afficher à l’écran la liste des imprimantes, mais non il me fait l’erreur suivante:

Concernant la ligne "WScript.Echo MapPrinters", le logiciel me dit:

Objet requis "

Hello. Tu peux essayer avec ça si tes postes ont le Wmi extention d’activé. En générale, windows Xp mais ça peux être vrai en W2000 Pro.


on Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Printer",,48)
For Each objItem in colItems
    Wscript.Echo "Default: " & objItem.Default
    Wscript.Echo "Name: " & objItem.Name
Next

Pour info, si tu mets le nom du poste distant à la place du point, tu peux voir les imprimantes installées à distance.

PS : j’en utilise aussi un autre au boulot en vbs. Je le récupère et te le mets la prochaine fois…

C’est bon je l’ai trouvé… Ton script plante car l’objet EnumPrinterConnections que tu récupère contient plusieurs objets imprimantes et bien sur la commande echo ne connais que le format texte et pas les objets (à moins qu’il y en est qu’un).

En plus, chaque imprimante laisse dans l’objet EnumPrinterConnections 2 lignes, une pour le port et une pour le nom.

Avec le script suivant, j’en tiens compte et je regroupe les informations par 2 pour avoir le port et le nom sur la même ligne. C’est surtout utilise quand les postes impriment sur plusieurs types d’imprimante (Local, réseau ou applicative (acrobat))

Par contre, pour ta gestion, mais je pense que tu l’avais prevu, remplace la commande echo par un stockage dans un fichier (format :wink: avec le nom de la machine pour que tu puisses le traiter avec excel par exemple.


Option Explicit

Dim Wshnet, MapPrinters, sStep1, sStep2, sNomImp, i
Set WshNet = CreateObject("WScript.Network")
Set MapPrinters = WshNet.EnumPrinterConnections

If (MapPrinters.count <> 0) Then
        For i = 0 to MapPrinters.count-1 'step 2
                if i mod 2 <> 0 then
                sStep1 = MapPrinters(i)
                        if sStep1 = sStep2 then
                                sNomImp = sStep1
                        else
                                sNomImp = sStep2 & sStep1
                        end if
                WScript.Echo sNomImp
                end if
                if i mod 2 = 0 then
                        sStep2 = MapPrinters(i)
                end if
        Next
End If

Bonjour,

Je te prierai de mettre le langage informatique dans le titre, tel que requis par la charte du forum programmation - pour une meilleure compréhension les uns des autres.

A lire :
http://www.clubic.com/forum/charte-du-foru…on-t306797.html

Pour éditer:
Suffit de cliquer sur ce bouton, dans ton message : http://www.clubic.com/forum/style_images/persoclubic/editer.gif

(note : ce message est un gros copier coller, ne pas répliquer derrière)

En tout cas merci rivebise, je vais tester tout ca dans la semaine

Je te tiendrai au courant… :slight_smile:

P.S. Désolé pour l’oubli (language de programmation)

(je te demande de corriger cet oubli, car tu le peux)

Merci encore rivebise,

Ca marche du nikel crome… :super:

Par contre je suis en train d’essayer de les supprimer après leur énumération, mais je constate que la methode “RemovePrinterConnection” est utilisable que pour les imprimantes réseaux.

Existe-t-il une methode pour supprimer quelquonque types d’imprimantes ?