IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Test d'existence avant suppression imprimante ?


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Test d'existence avant suppression imprimante ?
    Bonjour à tous.

    J'ai un petit soucis de script et si certains d'entre vous pouvaient m'aider ça me simplifierait bien les choses.

    Exposé du problème : Comme on a un soucis au niveau d'un serveur d'impression, je vais passer par un autre serveur pour les impressions de certaines machines.
    Jusque là pas de soucis.
    Le problème c'est au niveau de mon script d'ajout d'imprimante, qui doit s'ouvrir à l'ouverture de la session de la centaine d'employés de la boîte.
    J'ai ajouté des lignes pour enlever certaines imprimantes du serveur précédent et tout fonctionne correctement sauf si l'imprimante a déjà été retirée (auquel cas il me dit, à raison, que la connexion réseau n'existe pas).
    Il faudrait donc que j'ajoute un test d'existence, mais je ne sais pas faire ça (je ne m'y connais pas trop en VBS) et ne trouve pas la solution.

    Voici le script en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     
    Set WshNetwork = WScript.CreateObject("WScript.Network")
     
    PrinterPath = "\\citrixtwo\*******"
    WshNetwork.RemovePrinterConnection PrinterPath, true, true
    PrinterPath = "\\srv****\******"
    WshNetwork.RemovePrinterConnection PrinterPath, true, true
    PrinterPath = "\\citrixtwo\******"
    WshNetwork.RemovePrinterConnection PrinterPath, true, true
     
     
    Dim net
    Set net = CreateObject("WScript.Network")
    net.AddWindowsPrinterConnection "\\datafr3\*****"
    net.AddWindowsPrinterConnection "\\datafr3\******"
    net.AddWindowsPrinterConnection "\\citrixtwo\*****"
    net.AddWindowsPrinterConnection "\\citrixtwo\*****"
    net.AddWindowsPrinterConnection "\\srv****\*****"
    net.AddWindowsPrinterConnection "\\citrixtwo\*****"
    net.AddWindowsPrinterConnection "\\datafr3\******"
    net.AddWindowsPrinterConnection "\\srv*****\******"
    net.AddWindowsPrinterConnection "\\sr****\******"

    Le soucis donc pour être plus clair, c'est que le script fonctionnera lorsqu'un utilisateur ouvrira sa session pour la première fois, mais qu'à partir de la seconde ouverture ça mettra un message d'erreur. Moi, je dois laisser la suppression une ou deux semaines (le temps que ce soit effectif partout, et des employés peuvent être en vacances, ...) et ça va poser problème si le message d'erreur est présent à chaque ouverture de session pendant plusieurs jours (mon téléphone ne va pas arrêter de sonner pour me demander ce qu'il se passe).

    Ca ne doit pas être bien méchant à régler, il suffit de rajouter une ligne de test (if imprimante existe then) dans les :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PrinterPath = "\\serveur\imprimante"
    WshNetwork.RemovePrinterConnection PrinterPath, true, true
    pour vérifier si l'imprimante est encore là avant de la supprimer, mais mes faibles connaissances de ce langage ne me permettent pas de le faire présentement (je sais lister les imprimantes "connectées" mais pas l'utiliser).

    Merci d'avance

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Réponse
    C'est bon, mon frère m'a aidé à résoudre le problème en s'inspirant d'un script vbs inclut dans une page web.

    Il suffit d'utiliser :

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Devant le même problème, la solution ne me satisfaisait pas... accepter une erreur et passer outre... pas mon genre

    Ca faisait un moment que je ne m'étais pas plongé dans le vbscript donc j'ai un peu galèré, mais voilà le résultat si d'autres sont intéressés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    'Suppression des imprimantes obselètes
    	For i = WshNetwork.EnumPrinterConnections.Count to 2 step -2
    		Select Case WshNetwork.EnumPrinterConnections.Item(i-1)
    			Case "\\[nom_serveur]\HP LaserJet 4250 Cel_0"
    				wshNetwork.RemovePrinterConnection "\\[nom_serveur]\HP LaserJet 4250 Cel_0"
    			Case "\\[nom_serveur]\HP LaserJet 4250 Cel_1"
    				wshNetwork.RemovePrinterConnection "\\[nom_serveur]\HP LaserJet 4250 Cel_1"
    			Case Else
    		End Select
    	Next
    'Ajout des imprimantes
    wshNetwork.AddWindowsPrinterConnection "\\[nom_serveur]\NRG_MP_C2500"
    wshNetwork.AddWindowsPrinterConnection "\\[nom_serveur]\NRG_MP_C2500PS"
    wshNetwork.AddWindowsPrinterConnection "\\[nom_serveur]\FS-2020D_Info"
     
    'Définition des imprimantes par défaut en fonction des ordinateurs
    Select Case wshNetwork.ComputerName
    	Case "PC_01"
    		wshNetwork.SetDefaultPrinter "\\[nom_serveur]\FS-2020D_Info"
    	Case "PC_02"
    		wshNetwork.SetDefaultPrinter "\\[nom_serveur]\FS-2020D_Info"
    	Case "PC_03"
    		wshNetwork.SetDefaultPrinter "\\[nom_serveur]\NRG_MP_C2500"
    	Case Else
    End Select
    Bon à savoir:
    Une chose qui m'a posé problème lorsque je trouvais une imprimante à supprimer, j'avais un message d'erreur en fin de boucle me disant que l'indice était en dehors de la plage, d'où le fait que je fasse une boucle décrémentielle de WshNetwork.EnumPrinterConnections.Count à 2 (pas zéro sinon on sort également de la plage) et non l'inverse. En effet, la plage se remet à jour dynamiquement après la suppression mais la valeur initiale est conservée pour la boucle. (je ne suis pas sur d'avoir été très clair mais bon)

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut true, true c quoi ?
    Bonjour,
    quelqu'un peut-il m'expliquer à quoi sert le true, true ?
    Merci car je n'arrive pas à trouver d'explication.




    Citation Envoyé par Zoldickun Voir le message
    Bonjour à tous.

    J'ai un petit soucis de script et si certains d'entre vous pouvaient m'aider ça me simplifierait bien les choses.

    Exposé du problème : Comme on a un soucis au niveau d'un serveur d'impression, je vais passer par un autre serveur pour les impressions de certaines machines.
    Jusque là pas de soucis.
    Le problème c'est au niveau de mon script d'ajout d'imprimante, qui doit s'ouvrir à l'ouverture de la session de la centaine d'employés de la boîte.
    J'ai ajouté des lignes pour enlever certaines imprimantes du serveur précédent et tout fonctionne correctement sauf si l'imprimante a déjà été retirée (auquel cas il me dit, à raison, que la connexion réseau n'existe pas).
    Il faudrait donc que j'ajoute un test d'existence, mais je ne sais pas faire ça (je ne m'y connais pas trop en VBS) et ne trouve pas la solution.

    Voici le script en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     
    Set WshNetwork = WScript.CreateObject("WScript.Network")
     
    PrinterPath = "\\citrixtwo\*******"
    WshNetwork.RemovePrinterConnection PrinterPath, true, true
    PrinterPath = "\\srv****\******"
    WshNetwork.RemovePrinterConnection PrinterPath, true, true
    PrinterPath = "\\citrixtwo\******"
    WshNetwork.RemovePrinterConnection PrinterPath, true, true
     
     
    Dim net
    Set net = CreateObject("WScript.Network")
    net.AddWindowsPrinterConnection "\\datafr3\*****"
    net.AddWindowsPrinterConnection "\\datafr3\******"
    net.AddWindowsPrinterConnection "\\citrixtwo\*****"
    net.AddWindowsPrinterConnection "\\citrixtwo\*****"
    net.AddWindowsPrinterConnection "\\srv****\*****"
    net.AddWindowsPrinterConnection "\\citrixtwo\*****"
    net.AddWindowsPrinterConnection "\\datafr3\******"
    net.AddWindowsPrinterConnection "\\srv*****\******"
    net.AddWindowsPrinterConnection "\\sr****\******"

    Le soucis donc pour être plus clair, c'est que le script fonctionnera lorsqu'un utilisateur ouvrira sa session pour la première fois, mais qu'à partir de la seconde ouverture ça mettra un message d'erreur. Moi, je dois laisser la suppression une ou deux semaines (le temps que ce soit effectif partout, et des employés peuvent être en vacances, ...) et ça va poser problème si le message d'erreur est présent à chaque ouverture de session pendant plusieurs jours (mon téléphone ne va pas arrêter de sonner pour me demander ce qu'il se passe).

    Ca ne doit pas être bien méchant à régler, il suffit de rajouter une ligne de test (if imprimante existe then) dans les :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PrinterPath = "\\serveur\imprimante"
    WshNetwork.RemovePrinterConnection PrinterPath, true, true
    pour vérifier si l'imprimante est encore là avant de la supprimer, mais mes faibles connaissances de ce langage ne me permettent pas de le faire présentement (je sais lister les imprimantes "connectées" mais pas l'utiliser).

    Merci d'avance

  5. #5
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 170
    Points
    17 170
    Par défaut
    Salut frksfi
    le premier True, force la suppression de l'imprimante mappé
    Le deuxieme, enregistre les modifications dans le profil de l'utilisateur
    Par défaut ses 2 paramètres sont False.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Bonjour,
    quelqu'un peut-il m'expliquer à quoi sert le true, true ?
    Merci car je n'arrive pas à trouver d'explication.
    La syntaxe à utiliser est : objNetwork.RemovePrinterConnection(strName, [bForce], [bUpdateProfile]).

    strName : Nom de l'imprimante
    bForce : bouléen qui indique si on doit forcer la suppression ou non(dans le cas False)
    bUpdateProfile : bouléen qui indique si on doit mettre à jour le profile ou non(dans le cas False)

    [EDIT] Je n'ai pas vu que ProgElecT(Salut) m'a devancé
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] test d'existance avant insertion
    Par iMech dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/02/2015, 18h46
  2. Test avant suppression
    Par scapefrom dans le forum Framework .NET
    Réponses: 2
    Dernier message: 31/07/2010, 00h29
  3. Test d'existence d'une table avant insertion
    Par YavaDeus dans le forum PL/SQL
    Réponses: 2
    Dernier message: 22/04/2009, 12h10
  4. Réponses: 5
    Dernier message: 13/06/2007, 16h23
  5. test existence avant INSERT
    Par richard038 dans le forum SQL
    Réponses: 3
    Dernier message: 19/02/2007, 17h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo