ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Série de fonctions à effectuer sur les logs et évènements   



L'auteur

Mike Gagnon
Canada Canada
Membre Simple
# 0000000025
enregistré le 14/10/2004

Gagnon Mike
Pointe Cla H9R 3K8
de la société Carver Technologies Inc.
Fiche personnelle


Note des membres
pas de note

Contributions > 09 - Automation > WMI (Windows Management Instrumentation)

Série de fonctions à effectuer sur les logs et évènements
# 0000000062
ajouté le 17/11/2004 19:55:40 et modifié le 17/11/2004
consulté 7863 fois
Niveau expert

Version(s) Foxpro :
VFP 7.0

Description

Voici quelques fonctions pour utliser avec les logs et événements sur un ordinateur. Normallement on peut trouver les enregistrements dans ControlPanel->Admistrative Tools->Event Viewer.

Code source :
&& Ajouter un entré dans le Event log, pour enristrer un erreur.

#define EVENT_FAILED  2
loShell = CreateObject("Wscript.Shell")
loNetwork = CreateObject("Wscript.Network")
lcComputer = "."
loWMIService = GetObject("winmgmts:" ;
"{impersonationLevel=impersonate}!\\" + lcComputer + "\root\cimv2")
colDiskDrives = loWMIService.ExecQuery ;
("Select * from win32_perfformatteddata_perfdisk_logicaldisk")
For each loDisk in colDiskDrives
lcDriveSpace = loDisk.Name + " " + TRANSFORM(loDisk.FreeMegabytes) ;
chr(13)+chr(10)
Next
lcEventDescription = "L'application Visual FoxPro n'a pu etre installée sur" ;
+ loNetwork.UserDomain + "\" + loNetwork.ComputerName ;
" by user " + loNetwork.UserName + ;
". l'espace libre est seulement de: " + lcDriveSpace
loShell.LogEvent(EVENT_FAILED, lcEventDescription)

&& Comment faire un copie du log 'Application' et supprimer toutes les entrées dans le log.

lcComputer = "."
loWMIService = Getobject("winmgmts:" ;
  + "{impersonationLevel=impersonate,(Backup)}!\\" + ;
  lcComputer + "\root\cimv2")
colLogFiles = loWMIService.ExecQuery ;
  ("Select * from Win32_NTEventLogFile where LogFileName='Application'")
For Each loLogfile In colLogFiles
  errBackupLog = loLogfile.BackupEventLog("c:\scripts\application.evt")
  If errBackupLog <> 0
    ?"The Application event log could not be backed up."
  Else
    loLogfile.ClearEventLog()
  Endif
Next

&& Comment faire un copie d'un des trois log (Application,System,Security) seulement si il atteint un certaine grosseure et supprimer toutes les entrées dans le log.

lcComputer = "."
loWMIService = Getobject("winmgmts:" ;
  + "{impersonationLevel=impersonate, (Backup, Security)}!\\" ;
  + lcComputer + "\root\cimv2")
colLogFiles = loWMIService.ExecQuery ;
  ("Select * from Win32_NTEventLogFile")
For Each loLogfile In colLogFiles
SET STEP ON
  If VAL(loLogfile.FileSize) > 100000
    lcBackupLog = loLogfile.BackupEventLog ;
      ("c:\scripts\" + loLogfile.LogFileName + ".evt")
    loLogfile.ClearEventLog()
  Endif
Next

&& Configurer les parametres des Event logs.

lcComputer = "."
loWMIService = Getobject("winmgmts:" ;
  + "{impersonationLevel=impersonate,(Security)}!\\" + ;
  lcComputer + "\root\cimv2")
colLogFiles = loWMIService.ExecQuery ;
  ("Select * from Win32_NTEventLogFile")
For Each loLogfile In colLogFiles
  lcLogFileName = loLogfile.Name
  wmiSWbemObject = Getobject("winmgmts:{impersonationLevel=Impersonate}!\\.\root\cimv2:" ;
    + "Win32_NTEventlogFile.Name='" + lcLogFileName + "'")
  wmiSWbemObject.MaxFileSize = 2500000000
  wmiSWbemObject.OverwriteOutdated = 14
  wmiSWbemObject.Put_
Next

&& Ajouter une nouvelle section dans l'event logs

#define NO_VALUE  ''
WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite("HKLM\System\CurrentControlSet\Services\EventLog\Scripts2\", NO_VALUE)

&& Revoye une liste des évènements individuels dans un log spécifique.

Clear
lcComputer = "."
loWMIService = Getobject("winmgmts:" ;
  + "{impersonationLevel=impersonate}!\\" + lcComputer + "\root\cimv2")
colLoggedEvents = loWMIService.ExecQuery ;
  ("Select * from Win32_NTLogEvent Where Logfile = 'System'")
For Each loEvent In colLoggedEvents
  ?"Category: " + Transform(loEvent.Category)
  ?"Computer Name: " + loEvent.ComputerName
  ?"Event Code: " + Transform(loEvent.EventCode)
  ?"Message: " + Alltrim(loEvent.Message)
  ?"Record Number: " + Transform(loEvent.RecordNumber)
  ?"Source Name: " + loEvent.SourceName
  ?"Time Written: " + WMIDateStringToDate(loEvent.TimeWritten)
  ?"Event Type: " + loEvent.Type
  ?"User: " + loEvent.User
Next

Function WMIDateStringToDate(lctime)
WMIDateStringToDate = Substr(lctime, 5, 2)+"/"+SUBSTR(lcTime,7,2)+"/"+;
SUBSTR(lcTime,1,4)+" "+SUBSTR(lcTime,9,2)+":"+SUBSTR(lcTime,11,2)+":"+SUBSTR(lcTime,13,2)
Return WMIDateStringToDate
Endfunc

&& Créer un entrée dans le log Application.

#define EVENT_SUCCESS  0
loShell = CreateObject("Wscript.Shell")
loShell.LogEvent(EVENT_SUCCESS,"Visual FoxPro a été installé avec succès.")

&& Créer un entrée dans un log custom.

WshShell = CreateObject("WScript.Shell")
lcCommand = "eventcreate /T Error /ID 100 /L Scripts /D " + Chr(34) + "Test event." + Chr(34)
WshShell.Run(lccommand)


Commentaires
Aucun commentaire enregistré ...

Publicité

Les pubs en cours :

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3