magnum42
Messages postés10Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 7 avril 2009
-
11 févr. 2005 à 13:56
magnum42
Messages postés10Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 7 avril 2009
-
15 févr. 2005 à 10:36
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
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
magnum42
Messages postés10Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 7 avril 2009 15 févr. 2005 à 10:36
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