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 :

Aide pour script d'analyse d'évènements


Sujet :

VBScript

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Aide pour script d'analyse d'évènements
    Bonjour !

    Nous avons plusieurs sites où ont lieu de fréquentes pannes de courant. J'ai donc pensé faire un " relevé " des évènements générés signifiant une bascule sur onduleur, et sur coupure nette.

    Je ne suis pas scripteur à la base, et je débute "à chaud" ... j'ai donc, pour l'essentiel, pris des morceaux de scripts que j'ai assemblés, mais j'ai beaucoup de mal avec les dates ... j'avais songé à utiliser Logparser, mais j'avais déjà entamé la réécriture du script.

    Voici le problème : je souhaite que le " relevé " s'effectue sur TOUS les jours du mois précédent le mois en cours. Ainsi, j'obtiens le nombre de coupures par site, le mois précédent. J'étais parti dans l'idée de faire une analyse habdomadaire, mais si je parviens à faire sur le mois précédent, ça sera déjà bien ... pour l'instant, le relevé s'effectue à la date de la veille.

    De même, j'aurais souhaité " exporter " les résultats dans une feuille excel, ou un graphique (comme le propose logparser), mais je ne sais pas si c'est possible.

    N'hésitez pas si la forme du script est mauvaise, à me le dire.

    En vous remerciant d'avance.

    Je mets ci-dessous le script :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    'Définition de la période d'étude, en l'occurence le jour actuel, moins 1
    Set dtmStartDate = CreateObject("WbemScripting.SWbemDateTime")
    Set dtmEndDate = CreateObject("WbemScripting.SWbemDateTime")
    DateToCheck = Date -3
    dtmStartDate.SetVarDate DateToCheck, CONVERT_TO_LOCAL_TIME
    dtmEndDate.SetVarDate DateToCheck + 1, CONVERT_TO_LOCAL_TIME
     
    dtmEndDate.SetVarDate Date, True
    dtmStartDate.SetVarDate DateToCheck, True
     
    'Affichage année, date, heure, à partir de la machine locale, qui est référente
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
     & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_LocalTime")
    For Each objItem in colItems
        Wscript.Echo ("Annee: " & objItem.Year) & (" Mois: " & objItem.Month) & (" Jour: " & objItem.Day) & (" Heure: " & objItem.Hour)
    	Wscript.Echo ""
     
    Next
     
    'Définition de la zone sur laquelle sera utilisé le script (exemple)
    arrComputers = Array("127.0.0.1")
    For Each strComputer In arrComputers
     
    'Affichage du nom de la machine et de son adresse IP
     
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * From Win32_ComputerSystem")
     
    For Each objItem in colItems
        Wscript.Echo objItem.Name
        WScript.Echo "" & strComputer
        WScript.Echo ""
     
    next
     
    'Relevé des coupures de courant
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
    Set colLoggedEvents = objWMIService.ExecQuery _
            ("Select * from Win32_NTLogEvent Where Logfile = 'System' and " _
                & "EventCode = '1165' and TimeWritten >= '" _ 
            & dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "'")
     
    Wscript.Echo "Coupures avec bascule sur onduleur depuis hier, minuit : " & colLoggedEvents.Count
     
    Wscript.Echo ""
     
    'Relevé des coupures suite à l'épuisement de la batterie de l'onduleur
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
    Set colLoggedEvents = objWMIService.ExecQuery _
            ("Select * from Win32_NTLogEvent Where Logfile = 'System' and " _
                & "EventCode = '6008' and TimeWritten >= '" _ 
            & dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "'")
     
    Wscript.Echo "Arrets secs du serveur suite epuisement onduleur depuis hier, minuit : " & colLoggedEvents.Count
    Wscript.Echo ""
     
    next

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Sans avoir analysé tout le script, j'aurais tendance à dire:

    Et la question est?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    " Voici le problème : je souhaite que le " relevé " s'effectue sur TOUS les jours du mois précédent le mois en cours. "

    Dans le principe de lancer le script sur un jour donné, comme c'est le cas actuellement via " DateToCheck = Date -3 " par exemple, où si j'ai bien tout compris et par rapport à la ligne de code, il prend en compte le jour actuel et remonte trois jours avant.

    Je souhaite faire la même chose, mais avec le mois précédent. : quand je lance le script, il me relève les erreurs des logs du mois précédent le mois en cours, et non plus d'un jour précédent le jour actuel. Comme une sorte de "MonthToCheck = Month -1", si cette commande existait, pour rester dans le même genre de syntaxe ...

    Désolé si je n'ai pas été clair

  4. #4
    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
    Bah cela semble assez simple, il suffit de faire un DateToCheck = Date -30 ou DateToCheck = Date -31.
    Comme j'ai vu dans ton script que tu sais recupérer la date à partir de Win32_LocalTime, et afficher le mois, tu devrais pouvoir faire un test pour savoir si le mois est pair ou impair (et donc savoir si tu doit faire -31 ou -30) et traiter les cas particulier de février et aout, et les années bisextiles. D'ailleur à mon avis tu peut trouver sur le net des exemples de codes te permettant de traiter les mois.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par cedric600
    Bah cela semble assez simple, il suffit de faire un DateToCheck = Date -30 ou DateToCheck = Date -31.
    Mais dans ce cas de figure, si j'ai bien compris, il prendra en compte un seul jour, il y a 30 ou 31 jours, et non pas la totalité des jours du mois précédent ?

  6. #6
    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
    Hum, je n'avais compris correctement ton problème.
    Désolé.
    Si j'ai un peu de temps tout à l'heure je vais réfléchir à ton problème.

  7. #7
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    Par défaut
    pour obtenir une valeur date correspondant exactement au même quantième du mois précédent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateSerial(Year(Date),Month(Date)-1,Day(Date))
    là, je me suis relu...

  8. #8
    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
    Voici le lien vers l'aide msdn sur les objets WMI que tu utilises pour obtenir la date :
    http://msdn.microsoft.com/library/de..._and_times.asp

Discussions similaires

  1. [mIRC] besoin d'aide pour scripting
    Par emile13 dans le forum IRC / mIRC
    Réponses: 5
    Dernier message: 03/03/2007, 00h05
  2. besoin d'aide pour script DOS
    Par isaglada dans le forum Windows
    Réponses: 4
    Dernier message: 15/02/2007, 11h07
  3. Aide pour script bash
    Par cmoiki dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/01/2007, 23h50
  4. aide pour script php/mysql
    Par jem27 dans le forum Débuter
    Réponses: 18
    Dernier message: 27/03/2006, 18h08
  5. aides pour script en shell
    Par komatek dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 12/08/2003, 15h36

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