Déclaration de variables / VBS [Résolu]

Signaler
Messages postés
10
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
7 avril 2009
-
Messages postés
10
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
7 avril 2009
-
Bonjour,
Je suis en train de coder un script VBS qui cherche certains évènements dans
l'eventlog de serveurs distants. Il n'est pas fini, mais il fonctionne pas trop mal.
Par contre, je voudrais que ce script puisse bosser sur un nombre INDEFINI de
serveurs (il ira chercher la liste de serveurs dans un fichier). D'ou mon PROBLEME :
Je ne sais pas à l'avance combien de serveurs je vais avoir, et donc combien
de variables : ServerCon, ServerCon2, ServerCon3, ... colEvents, colEvents2, ...
===> Il me faut définir un nombre indéfini de variables (object) <=====
Ce serait génial un truc du genre :
For i = 1 to nb_serv
Dim ServerCon & i
Next
Mais ca ne passe pas :-(


Je pourrais, je sais, passer par une fonction avec un object déclaré dedans, qui
est appellée pour chaque serveur, mais je ne veux pas car pour gagner un temps fou,
je voudrais lancer ma requete sur chaque serveur, puis après, chercher les résultats.


J'espère avoir été assez clair. Merci d'avance à tous.
(Tiens, je viens tout juste de penser à un truc : les dictionnaires. Ca passe des
objets dans les dicos ??) HELP !!


Question bonus : pourquoi ca traine autant??? (Si ca allait bcp plus vite, je ne me
prendrais pas la tête comme ca pour la première question). Je précise pourtant de
regarder X dernières heures de la log, et pas tout. Pourtant, j'ai bien l'impression
qu'il le fait...
Franck

-----------------------


Option Explicit
Const ServerName = "BT1SLK5A"
Const ServerName2 = "BT1SLK59"
Const serv_login = "domain\login"
Const serv_pass = "password"


Dim oWMIService, colEvents, colEvents2, oEvent, oEvent2
Dim Locator, ServerCon, ServerCon2
Dim oSW_date, date_debut_check


Set Locator = CreateObject("WbemScripting.SWbemLocator") 'Nouvelle connection
Set oSW_date = CreateObject("WbemScripting.SWbemDateTime")


Set ServerCon = Locator.ConnectServer(ServerName,"root\cimv2",serv_login,serv_pass)
Set ServerCon2 = Locator.ConnectServer(ServerName2,"root\cimv2",serv_login,serv_pass)
date_debut_check = DateAdd("h",-5,Now()) '5 heures
oSW_date.SetVarDate date_debut_check, True


wscript.echo "Searching ..."
Set colEvents = ServerCon.ExecQuery ("Select * from Win32_NTLogEvent Where LogFile='Application' And TimeWritten >= '" & oSW_date & "'")
Set colEvents2 = ServerCon2.ExecQuery ("Select * from Win32_NTLogEvent Where LogFile='Application' And TimeWritten >= '" & oSW_date & "'")
wscript.echo "Finished searching ..."


wscript.echo time
For each oEvent2 in colEvents2
wscript.echo oEvent2.SourceName & vbtab & oEvent2.Category & vbtab & transform_date(oEvent2.TimeWritten) & vbtab & Time '& oEvent2.Type
Next
wscript.Echo time


wscript.echo time
For each oEvent in colEvents
wscript.echo oEvent.SourceName & vbtab & oEvent.Category & vbtab & transform_date(oEvent.TimeWritten) & vbtab & Time '& oEvent.Type
Next
wscript.Echo time


Private Function transform_date(d)
Dim td
'20050210014104.000000+060
'2005 02 10 01 41 04
td = Mid(d,9,2) & ":" & Mid(d,11,2) & ":" & Mid(d,13,2)
td = Mid(d,7,2) & "/" & Mid(d,5,2) & "/" & Left(d,4) & " " & td
transform_date = td
End Function

2 réponses

Messages postés
10
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
7 avril 2009

Merci pour ta réponse rapide zippro4012.
C'est ok, j'ai trouvé une "bidouille" avec des dicos.
Un dico, deux éléments dicos par serveur.
ServerName & "_L" Le Locator pour ce serveur
ServerName & "_R" Le Result du query pour ce serveur.

C'est un peu 'Jo la bidouille'. Je n'ai pas trouvé mieux, mais bon, ca fonctionne,
alors :-)

Thanks

Franck

----------------------------------
Set Servers = CreateObject("Scripting.Dictionary")
Set Locator = CreateObject("WbemScripting.SWbemLocator") 'Nouvelle connection


wscript.echo "Connecting to servers and launching queries ..."
For each ServerName in list_serv
wscript.echo vbtab & ServerName & " ..."
Servers.Add ServerName & "_L",Locator.ConnectServer(ServerName,"root\cimv2",serv_login,serv_pass)
Servers.Add ServerName & "_R",Servers.Item(ServerName & "_L").ExecQuery(my_query)
wscript.echo vbtab & vbtab & "OK"
Next


wscript.echo vbnewline & vbnewline & "Finding events ..."
For each ServerName in list_serv
wscript.echo vbtab & ServerName & vbtab & vbtab & vbtab & vbtab & Time & " ..."
For each oEvent in Servers.Item(ServerName & "_R")
'wscript.echo oEvent.SourceName & vbtab & oEvent.Category & vbtab & transform_date(oEvent.TimeWritten) & vbtab & Time '& oEvent.Type
if(oEvent.EventCode=208) then
wscript.echo vbtab & vbtab & Status(oEvent.Message) & vbtab & transform_date(oEvent.TimeWritten) '& vbnewline & vbtab & oEvent.Message
end if
Next
Next
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 107 internautes nous ont dit merci ce mois-ci

Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
1
tu peut peut être utiliser les "Collection", qui permettent de stocker des objets dans une liste