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 :

Passage en parametre


Sujet :

VBScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 79
    Points : 30
    Points
    30
    Par défaut Passage en parametre
    Bonjour,

    Je voudrais passer en parametre le process a killer dans la fonction suivante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcessList = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = 'calc.exe'")
    For Each objProcess in colProcessList
        objProcess.Terminate()
    Next
    Est ce que cela est bon ou pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim ETAT_PROCESS
    ETAT_PROCESS= args(0)
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcessList = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = ETAT_PROCESS")
    For Each objProcess in colProcessList
        objProcess.Terminate()
    Next
    Merci de votre aide

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    pour concaténer le contenu d'une variable chaine à une chaine ... il faut sortir la variable des " .. en plus tu as oublié les '


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set colProcessList = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = '" & ETAT_PROCESS & "'")

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 79
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    Merci pour ta reponse mais j'ai modifié le code comme tu me l'as dit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim NOM_PROCESS
    NOM_PROCESS= args(0)
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcessList = objWMIService.ExecQuery _
        Set colProcessList = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = '" & NOM_PROCESS & "'")
    For Each objProcess in colProcessList
        objProcess.Terminate()
    Next
    Lorsque je le lance sous dos, il me donne un message d'erreur:

    D:\Script_test\kill_process.vbs(7, 5) Erreur de compilation Microsoft VBScript:
    Fin d'instruction attendue

    Peux tu me dire comment le lancer sous dos.

    PS: Voici la ligne de commande que je lance: kill_process.vbs "calc.exe"

    PS2: J'ai tout essayé avec les ", les ' mais aussi sans rien.

    Please help me ^^

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set colProcessList = objWMIService.ExecQuery _
        Set colProcessList = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = '" & NOM_PROCESS & "'")
    est ce une erreur de copier coller pour le post ou non ?

    Ceci marche chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    main
    sub main()
    Dim NOM_PROCESS
    Dim args
    Set args = WScript.Arguments
    NOM_PROCESS= args(0)
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '" & NOM_PROCESS & "'")
    For Each objProcess in colProcessList
        objProcess.Terminate()
    Next
    end sub
    La ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomDuVBS.vbs "notepad.exe"
    aussi possible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomDuVBS.vbs notepad.exe
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 79
    Points : 30
    Points
    30
    Par défaut
    Merci Ced pour ton aide c'est parfait. ca marche chez moi aussi

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 79
    Points : 30
    Points
    30
    Par défaut
    Bonjour a tous,

    Le kill des process marche sans probleme. En faite je veux tester si le process a killer est present ou pas. S'il est present, il sera killé et il va ecrire dans la log qu il a ete killé. Sinon il ecrit qu il est pas killé car non present.

    voici mon code

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    main
    sub main()
    Dim NOM_PROCESS
    Dim args
    Set args = WScript.Arguments
    NOM_PROCESS= args(0)
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '" & NOM_PROCESS & "'")
    For Each objProcess in colProcessList
        objProcess.Terminate()
    Next
    end sub
     
    'On instancie l'objet
    Set FSO = CreateObject("Scripting.FileSystemObject")
    On Error Resume Next
     
    'On instancie le fichier texte
    Set Ftxt = FSO.CreateTextFile("D:\Script_test", False)
     
     
    'Creation dy fichier Log
     
                    If Err.Number = 0 Then
                            Set Ftxt = FSO.GetFile("D:\Script_test\SYS_LOG_systeme.log")
                            Set FtxtBis = Ftxt.OpenAsTextStream(8, -2)
                            FtxtBis.writeline (parametre)
                            FtxtBis.Close
                            Set FtxtBis = Nothing
                            Ftxt.Close
                            Set Ftxt = Nothing
                    Else
                            Set Ftxt = FSO.CreateTextFile("D:\Script_test\SYS_LOG_systeme.log", False)
                            Set Ftxt = FSO.GetFile("D:\Script_test\SYS_LOG_systeme.log")
                            Set FtxtBis = Ftxt.OpenAsTextStream(8, -2)
                            FtxtBis.writeline (parametre)
                            FtxtBis.Close 'Fermeture
                            Set FtxtBis = Nothing
                            Ftxt.Close
                            Set Ftxt = Nothing
                    End If
                    FSO.Close
                    WScript.Quit(1)
     
     
     
    If Err.Number = 0 Then
                    Set Ftxt = FSO.GetFile("D:\production\home\tws\log\SYS_LOG_systeme.log")
                    Set FtxtBis = Ftxt.OpenAsTextStream(8, -2)
                    FtxtBis.writeline (Year(date)) & vbTab & (Month(date)) & vbTab & (Day(date)) & vbTab & (time) & vbTab & (getSystemVar("COMPUTERNAME")) & vbTab & resultat1 & vbTab & resultat2 & vbTab & (PID) & vbTab & (terminal) & vbTab & resultat5 & vbTab & resultat4 & vbTab & return & vbTab & (gravite) & vbTab & resultat3 & vbTab & (getSystemVar("UNISON_JOBNUM")) & vbTab & (valeur) & vbTab & (message)
                    FtxtBis.Close
                    Set FtxtBis = Nothing
                    Ftxt.Close
                    Set Ftxt = Nothing
            Else
                    Set Ftxt = FSO.CreateTextFile("D:\production\home\tws\log\SYS_LOG_systeme.log", False)
                    Set Ftxt = FSO.GetFile("D:\production\home\tws\log\SYS_LOG_systeme.log")
                    Set FtxtBis = Ftxt.OpenAsTextStream(8, -2)
                    FtxtBis.writeline (Year(date)) & vbTab & (Month(date)) & vbTab & (Day(date)) & vbTab & (time) & vbTab & (getSystemVar("COMPUTERNAME")) & vbTab & resultat1 & vbTab & resultat2 & vbTab & (PID) & vbTab & (terminal) & vbTab & resultat5 & vbTab & resultat4 & vbTab & return & vbTab & (gravite) & vbTab & resultat3 & vbTab & (getSystemVar("UNISON_JOBNUM")) & vbTab & (valeur) & vbTab & (message)
                    FtxtBis.Close 'Fermeture
                    Set FtxtBis = Nothing
                    Ftxt.Close
                    Set Ftxt = Nothing
            End If
    FSO.Close
     
    WSCript.Sleep intSleep
    Merci

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    quel est le problème ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 79
    Points : 30
    Points
    30
    Par défaut
    Bonjour Ced,

    C'est bon je viens de trouver la solution.

    Voici ke code si ca peux vous aider

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Function getSystemVar(VarName)
        Dim wss, env
        Set wss = CreateObject("WScript.Shell")
        Set env = wss.environment("process")
        getSystemVar = env(VarName)
    End Function
     
     
     
    'On recupere une partie dela chaine de caractere
     
    resultat1 = Mid(getSystemVar("UNISON_SCHED"),2,3)
    resultat2 = Mid(getSystemVar("UNISON_SCHED"),7,3)
    resultat3 = Mid(getSystemVar("UNISON_SCHED"),5,3)
    resultat4 = Mid(getSystemVar("UNISON_JOB"),14,43)
    resultat5 = Mid(getSystemVar("USERNAME"),13.6)
     
     
     
    Dim NOM_PROCESS
    Dim args
    Set args = WScript.Arguments
    NOM_PROCESS= args(0)
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '" & NOM_PROCESS & "'")
     
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set Ftxt = FSO.OpenTextFile ("D:\production\home\tws\log\SYS_LOG_systeme.log",8,true)
    Ftxt.close
    If ColProcessList.count <> 0 Then
     
            For Each objProcess in colProcessList
            message = "Le process" & vbTab & (NOM_PROCESS) & vbTab & "a été killé"
     
       Dim retour
       Dim strComputer
       Dim objWMIService
       Dim colItems
       Dim FSO
       Dim Ftxt
       Dim path
     
       path = "D:\production\home\tws\log\SYS_LOG_systeme.log"
       retour = 0
       strComputer = "."
     
       Set Ftxt = FSO.OpenTextFile (path,8,true)
       Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
       Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '" & NOM_PROCESS & "'",,48)
     
          retour = objProcess.Terminate()
       Ftxt.writeline (Year(date)) & vbTab & (Month(date)) & vbTab & (Day(date)) & vbTab & (time) & vbTab & (getSystemVar("COMPUTERNAME")) & vbTab & resultat1 & vbTab & resultat2 & vbTab & (PID) & vbTab & (terminal) & vbTab & resultat5 & vbTab & resultat4 & vbTab & return & vbTab & (gravite) & vbTab & resultat3 & vbTab &(getSystemVar("UNISON_JOBNUM")) & vbTab & (valeur) & vbTab & (message)
    Ftxt.Close
            Next
     Else
     Set FSO = CreateObject("Scripting.FileSystemObject")
     Set Ftxt = FSO.OpenTextFile ("D:\production\home\tws\log\SYS_LOG_systeme.log",8,true)
      Ftxt.writeline "le process n'existe pas"
       Ftxt.close()
    WScript.Quit(1)
     end if

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

Discussions similaires

  1. DOS passage de parametre à un .bat
    Par malbaladejo dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 26/11/2014, 16h44
  2. [langage] Passage de parametre lors de l execution
    Par WetzlarMan dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2004, 14h28
  3. Probleme de passage de parametre a un TQuery
    Par gve21 dans le forum C++Builder
    Réponses: 7
    Dernier message: 15/01/2004, 16h49
  4. Passage de parametre calculé
    Par soazig dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 06/06/2003, 17h25
  5. Passage de parametre a une anim Flash 5
    Par debug dans le forum Intégration
    Réponses: 4
    Dernier message: 03/06/2002, 18h59

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