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 :

VBS + lancement d'un programme sauf sur certain poste


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2012
    Messages : 76
    Par défaut VBS + lancement d'un programme sauf sur certain poste
    Bonjour,
    Je suis nouveau dans le forum et je viens de débuter avec VBscript. Je souhaiterais réaliser un script de démarrage où à la fin, il lance un programme pour tous les postes sauf sur certains. J'ai actuellement un script en DOS.

    @Echo ============= LANCEMENT DU PROG ==========
    IF %COMPUTERNAME%==POSTE-X goto endscript
    IF %COMPUTERNAME%==POSTE-Y goto endscript
    IF %COMPUTERNAME%==POSTE-Z goto endscript

    \\serveur\prog\lancement.exe

    :endscript

    Auriez-vous une idée de ce que cela peut donner en VBS?

    Merci par avance

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Par défaut
    En VBS ça donnerai ça :
    Code VBS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    set WshShell = CreateObject("wscript.Shell")
    set WshNetwork = CreateObject("wscript.network")
     
    strcomputer = WshNetwork.ComputerName
     
    if strcomputer <> "POSTE-X" and strcomputer <> "POSTE-Y" and strcomputer <> "POSTE-Z" then
    	WshShell.Run("\\serveur\prog\lancement.exe", , false) 'false pour spécifier de continuer le script sans attendre la fin du programme
    end if
    Si tu as plus de 3 postes à exclure le IF peut rapidement devenur lourd, il faudrait alors créer un array.

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2012
    Messages : 76
    Par défaut
    Tout d'abord merci pour ta réponse. Je souhaiterais effectivement mettre 15 postes. Comment dois je m'y prendre?

    Merci

  4. #4
    Membre confirmé
    Homme Profil pro
    IT in outer space
    Inscrit en
    Novembre 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : IT in outer space

    Informations forums :
    Inscription : Novembre 2006
    Messages : 88
    Par défaut
    Ouais justement c'est le truc auquel je pensais.
    L'idée de BlobbyBlob est bien et équivaut à ce que tu avais dans ton fichier de commandes, c'est-à-dire coder en dur dans le if mais imagine la taille du if sur 15 postes et si ça doit evoluer vers 30 ça deviendra une horreur (donc ne parlons même pas de centaines voir de milliers de postes).
    Ce qu'il faudrait c'est avoir une partie du code où tu saisie les noms des postes concernés puis que tu parcours ce tableau pour y comparer le nom du poste courant et la liste des postes concernés.

    Stocker les noms de machines dans une base de donnée ? (est-ce pertinent ?)
    Un dictionary ?
    Un tableau ?
    Ou même un fichier texte avec un nom de poste par ligne c'est facile à implémenter grace à la méthode ReadLine. Je me demande juste si c'est performant.
    Bref, faut trouver un compromis. ^^

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2012
    Messages : 76
    Par défaut
    est ce que je peux stocker ces postes dans un fichier txt par exemple et faire appel a ce ficher pour ignorer une commande?

  6. #6
    Membre confirmé
    Homme Profil pro
    IT in outer space
    Inscrit en
    Novembre 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : IT in outer space

    Informations forums :
    Inscription : Novembre 2006
    Messages : 88
    Par défaut
    En fait ce que j'avais en tête c'est un fichier texte avec un nom de poste par ligne. Pour le moment ce que j'ai fait c'est reprendre le script de BlobbyBlob pour te montrer ce que ça donne avec une array de 15 postes. Il faudra juste adapter les noms des postes.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Option Explicit
    Dim WshShell, WshNetwork
    Dim strComputer
    Dim postesExclus(14)
    Dim i, shouldDo
     
    shouldDo = True
     
    postesExclus(0)    = "Janvier"
    postesExclus(1)    = "Fevrier"
    postesExclus(2)    = "Mars"
    postesExclus(3)    = "Avril"
    postesExclus(4)    = "Mai"
    postesExclus(5)    = "Juin"
    postesExclus(6)    = "Juillet"
    postesExclus(7)    = "Aout"
    postesExclus(8)    = "Septembre"
    postesExclus(9)    = "Octobre"
    postesExclus(10)    = "Novembre"
    postesExclus(11)    = "Decembre"
    postesExclus(12)    = "January"
    postesExclus(13)    = "February"
    postesExclus(14)    = "March"
     
    Set WshShell = CreateObject("WScript.Shell")
    Set WshNetwork = CreateObject("WScript.Network")
     
    strComputer = WshNetwork.ComputerName
     
    For i = 0 To Ubound(postesExclus)
        If LCase(strcomputer) = LCase(postesExclus(i)) Then
            shouldDo = False
            'MsgBox strComputer & " est répertorié comme exclus donc pas d'action"
            Exit For
        End If
    Next
     
    If shouldDo Then
        'MsgBox strComputer & " est concerné par l'action du script",, i
        WshShell.Run("\\serveur\prog\lancement.exe", , false) 'false pour spécifier de continuer le script sans attendre la fin du programme
    End If
    Maintenant avec un Fichier ce qu'il faudrait faire c'est recréer un autre objet pour accéder au fichier texte puis lire chaque ligne. Y'aurait quelques lignes en plus mais ça ressemblerait beaucoup.

    Ce qui est séduisant avec un fichier texte c'est que c'est éditable très facilement.
    Suffit de comprendre qu'il faut écrire un nom de poste par ligne mais je me demande si ça peut poser problème d'accès sur le fichier depuis les postes.

    Utiliser un tableau est plus monolithique mais ça marche pas plus mal.

Discussions similaires

  1. Redirection au clique sauf sur certains éléments
    Par neo18045 dans le forum jQuery
    Réponses: 2
    Dernier message: 01/08/2013, 15h22
  2. [Graphics View] Scale de la vue sauf sur certains QGraphicsItem
    Par hush dans le forum Qt
    Réponses: 2
    Dernier message: 24/04/2011, 10h13
  3. Réponses: 14
    Dernier message: 27/05/2008, 10h06
  4. Bug programme Delphi sur certains XP
    Par Philippe85 dans le forum Delphi
    Réponses: 11
    Dernier message: 13/12/2006, 11h51

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