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 :

Faire un script en VBS pour executer et tester l'execution d'un processus


Sujet :

VBScript

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut Faire un script en VBS pour executer et tester l'execution d'un processus
    Bonjour,

    Je développe un peu en PHP, mais pas du tout en VBS.

    Je recherche un faire un script qui ferai ceci :

    Algo

    Executer localhost.exe /NP /notag /FOLDER:J:\afn\ocs-ng

    While(1)
    {
    If(le processus "OCSInventory.exe" n'est plus executer)
    {
    effacer fichier *.dll, *.ini, *.exe,*.conf
    effacer dossier download
    exit;
    }
    }
    Pourriez vous me dire comment faire ?

    J'ajoute que je n'y connais rien en vbs, le code, je l'écris dans un fichier texte avec l'extention vbs comme on le fait avec batch ?

    Merci d'avance de votre aide

  2. #2
    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 : 43
    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
    le code, je l'écris dans un fichier texte avec l'extention vbs comme on le fait avec batch ?
    En gros oui.

    Executer localhost.exe /NP /notag /FOLDER:J:\afn\ocs-ng
    WSH Run

    If(le processus "OCSInventory.exe" n'est plus executer)
    Win32_Process (WMI)

    effacer fichier *.dll, *.ini, *.exe,*.conf
    http://vb.developpez.com/faqvbs/?pag...oDeleteFichier

    effacer dossier download
    http://vb.developpez.com/faqvbs/?pag...soDeleteFolder

    exit;
    Quit

    Bref regarde la FAQ VBScript

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Citation:
    Executer localhost.exe /NP /notag /FOLDER:J:\afn\ocs-ng
    WSH Run

    1. Cela fonctionne bien. Par contre j'execute un programme via un chemin réseau (\\serveur\partage\executable.exe), seulement sur windows vista, j'ai un message d'avertissement de sécurité "l'éditeur n'a pas pu être vérifié, voulez vous vraiment executer ce logiciel ?"

    il y a un moyen d'éviter ceci ?

    2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Return = WshShell.Run("\\localhost\Partage\ocs\localhost.exe /NP /notag /FOLDER:C:\ocs-ng" , 1, true)
     
    Set objWMI = GetObject("winmgmts:root\cimv2")
    sQuery = "SELECT * FROM Win32_process WHERE Name LIKE 'OCSInventory.exe'"
    For Each oproc In objWMI.execquery(sQuery)
    	Wscript.echo "pas executer"
    Next
    Set objWMI = Nothing
    J'aimerai savoir s'il y a une possibilité pour compter le nombre d'éléments que me retourne la requête SQL concernant les processus et mettre cette valeur en variable ?

    3. concernant la suppression de fichier de dossier, j'ai fais ceci :

    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
    ' Supprimer fichiers et dossiers temporaires
    Dim oFSO
    Set oFSO = CreateObject("Scripting.FileSystemObject")
     
    If oFSO.FileExists("D:\Partage\ocs\*.dll") Then 
    	oFSO.DeleteFile "D:\Partage\ocs\*.dll",True
    End If 
     
    If oFSO.FileExists("D:\Partage\ocs\*.ini") Then 
    	oFSO.DeleteFile "D:\Partage\ocs\*.ini",True
    End If 
     
    If oFSO.FileExists("D:\Partage\ocs\*.conf") Then 
    	oFSO.DeleteFile "D:\Partage\ocs\*.conf",True
    End If 
     
    If oFSO.FileExists("D:\Partage\ocs\*.exe") Then 
    	oFSO.DeleteFile "D:\Partage\ocs\*.exe",True
    End If 
     
    If oFSO.FolderExists("D:\Partage\ocs\download") Then 
    	oFSO.DeleteFolder "D:\Partage\ocs\download",True
    End If
    cependant les fichier ne s'efface pas. Le problème est du au if avec le *.dll. Dans ce cas comment faire pour le dire si il trouve des fichier de type DLL, alors...

    sinon la suppression de fichier avec *.dll fonctionne sans le if

  4. #4
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 112
    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 112
    Points : 16 646
    Points
    16 646
    Par défaut
    sinon la suppression de fichier avec *.dll fonctionne sans le if
    Alors pourquoi utiliser le If .... Then , puisque tu desires justement effacer les *.tes extentions, une suite de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    oFSO.DeleteFile "D:\Partage\ocs\*.dll",True
    oFSO.DeleteFile "D:\Partage\ocs\*.ini",True
    oFSO.DeleteFile "D:\Partage\ocs\*.exe",True
    oFSO.DeleteFolder "D:\Partage\ocs\download",True
    ne te suffis pas ?

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Alors pourquoi utiliser le If .... Then , puisque tu desires justement effacer les *.tes extentions, une suite de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    oFSO.DeleteFile "D:\Partage\ocs\*.dll",True
    oFSO.DeleteFile "D:\Partage\ocs\*.ini",True
    oFSO.DeleteFile "D:\Partage\ocs\*.exe",True
    oFSO.DeleteFolder "D:\Partage\ocs\download",True
    ne te suffis pas ?
    non car si jamais les fichiers ne sont pas présents, j'ai un message d'erreurs

  6. #6
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    pour les processus, j'ai trouvé le réponse dans le forum :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ' Détecter si le processus d'inventaire est toujours en execution
    Set objWMI = GetObject("winmgmts:root\cimv2")
    sQuery = "SELECT * FROM Win32_process WHERE Name LIKE 'OCSInventory.exe'"
    if objWMI.execquery(sQuery).Count = 0 then
    	Wscript.echo "executer"
    end if
    Set objWMI = Nothing
    mais reste le problème des si le fichier exsiste avec un *.extention

    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
    ' Supprimer fichiers et dossiers temporaires
    Dim oFSO
    Set oFSO = CreateObject("Scripting.FileSystemObject")
     
    If oFSO.FileExists("D:\Partage\ocs\*.dll") Then 
    	oFSO.DeleteFile "D:\Partage\ocs\*.dll",True
    End If 
     
    If oFSO.FileExists("D:\Partage\ocs\*.ini") Then 
    	oFSO.DeleteFile "D:\Partage\ocs\*.ini",True
    End If 
     
    If oFSO.FileExists("D:\Partage\ocs\*.conf") Then 
    	oFSO.DeleteFile "D:\Partage\ocs\*.conf",True
    End If 
     
    If oFSO.FileExists("D:\Partage\ocs\*.exe") Then 
    	oFSO.DeleteFile "D:\Partage\ocs\*.exe",True
    End If 
     
    If oFSO.FolderExists("D:\Partage\ocs\download") Then 
    	oFSO.DeleteFolder "D:\Partage\ocs\download",True
    End If

  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 : 43
    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
    1. Cela fonctionne bien. Par contre j'execute un programme via un chemin réseau (\\serveur\partage\executable.exe), seulement sur windows vista, j'ai un message d'avertissement de sécurité "l'éditeur n'a pas pu être vérifié, voulez vous vraiment executer ce logiciel ?"

    il y a un moyen d'éviter ceci ?
    Aucune idée je n'ai jamais utilisé vista.

    Une execquery te renvois une collection d'objet. En vbs une collection à une propriété count pour avoir sa taille comme tu l'as vu dans l'autre forum.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     dim col
    Set objWMI = GetObject("winmgmts:root\cimv2")
    sQuery = "SELECT * FROM Win32_process WHERE Name LIKE 'OCSInventory.exe'"
    set col = objWMI.execquery(sQuery)
    If col.count >= 0 Then
        For Each oproc In col
    	Wscript.echo "Il y a " & col.count & " instance de OCSInventory.exe en cours d'exécution."
        Next
    End If
    Set objWMI = Nothing

    Pour le reste, MS ne dit jamais que tu peux utiliser des caractères jokers avec FileSystemObject :
    http://msdn.microsoft.com/en-us/libr...5t(VS.85).aspx

  8. #8
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Merci pour vos aides. J'ai fini mon script et fonctionne parfaitement !

  9. #9
    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 : 43
    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
    Est ce que tu pourrais poster ton code fini, pour ceux qui tomberont sur le post lors de leur recherche ?

  10. #10
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    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
    ' Variable d'environement
    Set shell = WScript.CreateObject("WScript.Shell")
    windir = shell.ExpandEnvironmentStrings("%SYSTEMDRIVE%")
     
    ' Dossier d'inventaire
    Dim DirInventaire
    DirInventaire = windir & "\InventoryGLPI"
     
    ' Executer l'inventaire
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Return = WshShell.Run("localhost.exe /NP /NOTAG /FOLDER:" & DirInventaire, 0, true)
     
    ' Détecter si le processus d'inventaire est toujours en execution
    Set objWMI = GetObject("winmgmts:root\cimv2")
    sQuery = "SELECT * FROM Win32_process WHERE Name LIKE 'OCSInventory.exe'"
    Do While 1
    	if objWMI.execquery(sQuery).Count = 0 then
     
    		' Supprimer fichiers et dossiers temporaires
    		Dim oFSO
    		Set oFSO = CreateObject("Scripting.FileSystemObject")
    		oFSO.DeleteFile DirInventaire & "\*.dll",True
    		oFSO.DeleteFile DirInventaire & "\*.ini",True
    		oFSO.DeleteFile DirInventaire & "\*.conf",True
    		oFSO.DeleteFile DirInventaire & "\*.exe",True
    		oFSO.DeleteFile DirInventaire & "\last_state",True
    		oFSO.DeleteFolder DirInventaire & "\download",True
     
    		' Quiter le script une fois l'inventaire terminé
    		WScript.Quit
    	end if
    Loop
    Set objWMI = Nothing

  11. #11
    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 : 43
    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
    Merci

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

Discussions similaires

  1. Faire un script pour executer .tex
    Par Hrayr dans le forum Débuter
    Réponses: 10
    Dernier message: 08/08/2011, 11h43
  2. Script VBS pour copier "Mes documents"
    Par DiabloZizi dans le forum Windows
    Réponses: 1
    Dernier message: 06/03/2006, 23h49
  3. Script VBS pour connaitre taille d'une image
    Par fredoh dans le forum Windows
    Réponses: 2
    Dernier message: 24/02/2006, 15h27
  4. Besoin d'aide pour faire un script
    Par shinux2004 dans le forum Langage
    Réponses: 4
    Dernier message: 16/07/2005, 17h44
  5. quel langage choisir pour faire de script sous windows
    Par pas05 dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 18/11/2002, 23h42

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