[VBS] Rechercher des fichiers selon leur nom

Rechercher des fichiers selon leur nom [VBS] - VB/VBA/VBS - Programmation

Marsh Posté le 25-11-2009 à 01:15:46    

Salut à tous!
 
En somme, j'essaie de créer un script vbs qui vérifiera régulièrement si l'antivirus de certaines machines est à jour, et si ça n'est pas le cas, une pop-up préviendra l'utilisateur de mettre à jour son antivirus.
Le script tournera toutes les heures, il sera utilisé sur certains portables de la société qui ne servent pas régulièrement et n'ont pas besoin d'être branchés sur le réseau, l'antivirus se met donc rarement à jour, d'où la nécessité de forcer la main aux agents.
 
Bref, mon script fonctionnera donc sur le principe suivant :
Il sera lancé toutes les heures via une tâche planifiée de windows
Il récupère la date du jour
Il scan le dossier de l'antivirus pour trouver les fichiers contenant les définitions de virus
Il compare la date de modification de ce fichier avec celle du jour, si la différence est supérieure à x jours, alors il affiche une pop-up
 
Pour ce qui concerne les dates, la pop-up, etc, aucun problème. Par contre, je n'arrive pas à trouver les fichiers de définition de virus.
 
L'antivitus en question est Trend, les fichiers de définition portent toujours le même nom, à savoir "lpt$vpn", mais leur extension est incrémentée de 2 ) chaque nouvelle version. En ce moment par exemple on a la 645 si je ne m'abuse.
L'antivirus garde toujours 2 versions de ces définitions de virus, l'actuelle et la précédente. J'ai donc 2 fichiers "lpt$vpn", l'un en ".645", l'autre en ".643". Après la recherche des fichiers, je vais donc devoir me base sur le fichier le plus récent pour ma comparaison.
 
La portion de code qui me pose problème est la suivante :

Code :
  1. strComputer = "."
  2. Set objWMIService = GetObject("winmgmts:" _
  3.     & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2" )
  4. Set colFiles = objWMIService. _
  5. A)    ExecQuery("Select * from CIM_DataFile where Name like 'C:\\Program Files\\Trend Micro\\OfficeScan Client\\lpt$vpn*'" )
  6. B)    ExecQuery("Select * from CIM_DataFile where Drive='C:' and Path='\\Program Files\\Trend Micro\\OfficeScan Client\\' and Name like ' lpt$vpn%'" )
  7. For Each objFile in colFiles
  8.     Wscript.Echo objFile.Name
  9. Next


 
La ligne A et la ligne B sont les 2 méthodes que j'ai testé, toutes les 2 sans résultat, mon script ne trouve jamais les fichiers.
J'ai essayé de rajouter des wildcards *, % après le nom du fichier, idem.
J'ai testé ma requête avec =, like, idem.
 
La seule requête qui me donne un résultat est la suivante :

Code :
  1. Select * from CIM_DataFile where Name='C:\\Program Files\\Trend Micro\\OfficeScan Client\\lpt$vpn.645'


Aucune utilité puisque je doit forcer l'extension du fichier.
 
Bref, je suis un peu coincé.
 
Est-ce que quelqu'un voit une solution?

Reply

Marsh Posté le 25-11-2009 à 01:15:46   

Reply

Marsh Posté le 14-12-2009 à 01:04:49    

Aucune idée ?

Reply

Marsh Posté le 22-12-2009 à 13:16:37    

yop,
 
apres un rapide coup d'oeil sur ton probleme, essaie ça eventuellement:
 
 
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2" )
 
Dim Drive, Path, File, Ext
 
Drive = "C:"
Path = "\\Program Files\\Trend Micro\\OfficeScan Client\\ "
File = "lpt$vpn"
 
Set colFiles = objWMIService.ExecQuery("Select * from CIM_DataFile where Drive = '" & Drive & " and Path = '" & Path & "' and File = "lpt$vpn" )
 
For Each objFile in colFiles
     Wscript.Echo objFile.Name
Next
 
si ca ne marche pas, je me pencherais un peu plus sur le probleme  :)  
 
A-B

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed