Script VBS suppression imprimantes avec exeptions

Résolu
Signaler
Messages postés
3
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
15 septembre 2011
-
Messages postés
3
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
15 septembre 2011
-
Bonjour,

Nous venons de renouveler le parc des copieurs dans les établissements de la région.Je dois maintenant supprimer tous les anciens copieurs et imprimantes (ils sont nombreux) présents sur les postes des utilisateurs.Seulement je souhaiterai ne pas supprimer les imprimantes virtuelles installées sur certains postes, à savoir celles de Cute PDF et PDF CREATOR. Je me suis servi de ce script afin de supprimer toutes les imprimantes :

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")

Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")

For Each objPrinter in colInstalledPrinters
objPrinter.Delete_
Next

Comment dois-je le modifier afin que celui-ci ne supprime pas les imprimantes virtuelles citées précédemment?

5 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
pas VBS sous la main sur ma machine;
Si pas objPrinter.DeviceID, alors objPrinter.Name

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
3
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
15 septembre 2011
1
Merci pour cette astuce, du coup voici mon script si cela peut servir à d'autres :

'Suppression de toutes les imprimantes locales et réseau sauf imprimantes virtuelles'

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")

Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")

For Each objPrinter in colInstalledPrinters
If objPrinter.Name <> "PDFCreator" and objPrinter.Name <> "CutePDF Writer" Then
objPrinter.Delete_
End IF
Next


Il ne me reste plus qu'a régler un problème de droit relatif à l'éxecution de ce script, en effet il faut être utilisateur avec pouvoir afin que celui-ci s'applique correctement sinon j'obtiens une erreur à la ligne comportant "objPrinter.Delete_"

Merci encore pour cette aide rapide!
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Bonjour,

 if objPrinter.DeviceID = PrnName then <> "...." and objPrinter.DeviceID <> "...."then


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
pardon ===>>

 if objPrinter.DeviceID <> "...." and objPrinter.DeviceID <> "...."then

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
3
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
15 septembre 2011
1
Merci pour cette réponse rapide.Si je comprend bien, je dois mettre "if objPrinter.DeviceID <> "...." and objPrinter.DeviceID <> "...."then " après " For Each objPrinter in colInstalledPrinters " et remplacer les "..." par le nom de chaque imprimante virtuelle.
Je vais essayer cela dès demain matin et je ferai un retour pour confirmer le bon déroulement.