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 & WMI] récuperation processus distant


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Points : 10
    Points
    10
    Par défaut [VBS & WMI] récuperation processus distant
    Bonjour a tous,

    je galère depuis un pti bout de temps sur un truc qui pourra vous paraitre simple.
    Je dois réaliser des script dont un qui doivent vérifier par WMI si les processus contenu dans un tableau tourne sur un pc distant, et l'intégrer dans une feuille excel.
    Je récupere un fichier CSV qui ressemble a celui en piece jointe. Une de ses particularité c qu'il contient deux séparateur différent. Ainsi, je crée un premier tableau avec Split et ";" pour pouvoir récupéré l'élément IP d'une machine de ce tableau, et je split le troisieme élément du tableau avec le séparateur "," pour pouvoir obtenir un tableau de tous les processus que je veux surveiller pour la machine concerné.

    En fait, j'ai trouvé pas mal de script mais je n'arrive pas a les intégrer correctement. Le premier peut me lire un fichier csv, le second peu me vérifier que tel processus est lancé sur une machine via WMI...j'ai essayé de les fusionner, mais j'ai une erreur a la ligne 26 de mon code...
    Quelqu'un pourrais me filer un coup de main ? merci

    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
    Const ForReading = 1
     
    Set objDictionary = CreateObject("Scripting.Dictionary")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile("C:\Modification CSV\data\bob45.csv", ForReading)
    i = 0
     
    Do Until objTextFile.AtEndOfStream 
        strNextLine = objTextFile.Readline
    'decoupage des ligne pour obtenir mes variables :
    insertion = strNextLine.Split(",")
    insertionprocessus = insertionprocessus(2).Split(";")
    'récupération de l'ip de la machine a tester
    strComputer = insertion(1)
     
    'pour vérifier que les processus tournent :
     
    For m = 0 to UBound(insertionprocessus)
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcesses = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = insertionprocessus(m)")
     
    If colProcesses.Count = 0 Then
        Wscript.Echo insertionprocessus(m) " is not running."
    Else
        Wscript.Echo insertionprocessus(m) " is running."
    End If
    next
     
        i = i + 1
    Loop
    mea culpa pour les balises...
    Images attachées Images attachées  

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Code a jour
    Bonjour !
    j'ai modifié mon code et j'apporche de ma réussite ! Le voici...

    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
     
    On Error Resume Next
     
    Const ForReading = 1
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile("C:\Modification CSV\data\bob45.csv", ForReading)
     
    line = objTextFile.Readline
     
    Do Until objTextFile.AtEndOfStream
        line = objTextFile.Readline
    insertion = Split(line,",",-1, 1)
    strComputer = insertion(1)
     
    proco = insertion(2)
    insertionprocessus = Split(proco,";",-1, 1)
     
    For Each proco in insertionprocessus
     
    msgbox proco
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcesses = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = ", proco )
     
    If colProcesses.Count = 0 Then
        msgbox proco & " is not running."
    Else
        msgbox proco & " is running."
    End If
     
    Next
     
    Loop
     
    objTextFile.Close
    le "msgbox proco" me renvoie bien le processus que je veux tester. Le problème c'est que ma vérification par "if" me renvoie toujours que le processus n'est pas présent sur al machine testé (même en local!). Après quelques tests je pense que le problème viens de la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set colProcesses = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = ", proco )
    En effet quand je remplace la variable "proco" dans cette ligne par une chaîne de caractère comme "lsass.exe", le if me renvoit bien un "lsass.exe is running". Ya t il un probleme avec l'utiliation de ma variable proco?

    Merci pour votre aide !

  3. #3
    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 040
    Points
    20 040
    Par défaut
    je sais pas je mettrai bien des quotes...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        ("Select * from Win32_Process Where Name = '" & proco & "'")

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Points : 10
    Points
    10
    Par défaut solution..
    Rebonjour,

    ok j'ai trouvé il fallait mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set colProcesses = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = '" & proco & "'" )
    ça marche, merci a ceux qui m'ont lu et bonne journée !

    note => a dsl j'avai pas vu ta reponse bbil ! c t pas bien compliqué...

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

Discussions similaires

  1. [VBS] Requete WMI pour récupération des adr. DNS
    Par fredsg dans le forum VBScript
    Réponses: 1
    Dernier message: 07/08/2009, 12h03
  2. commande DOS ou vbs pour ouvrir un fichier distant
    Par Braillane dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 03/10/2008, 17h23
  3. VBS TimeGenerated wmi
    Par vinczente dans le forum VBScript
    Réponses: 3
    Dernier message: 31/07/2007, 13h37
  4. Réponses: 5
    Dernier message: 05/06/2007, 16h25
  5. [processus distant]
    Par Straahd dans le forum Développement
    Réponses: 4
    Dernier message: 28/06/2004, 11h49

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