Ik ben bezig met een script wat NT Event Log's binnenhaalt aan de hand van enkele bepalingen.
Dit script is in VBScript, en ik query daarmee de WMI database van een Windows 2000 Server. (Ook NT4, maar das verder niet belangrijk)
Wat ik in weze doe is dit:
Hierin is strDate een string die de datum noteerd als 20040218120502 -1 dag
Omdat objItem.TimeGenerated ook in die vorm wordt gegeven.
Ik maak dus in regel (5) een selectie op de events die alleen in de afgelopen 24 uur zijn gebeurd.
Echter, wordt wel de gehele database doorlopen. En bij een server waar ook wordt geprint worden er nogal wat events gelogged. (Bovendien staat de eventlogfile size op 4096kb, want dat is hier policy)
Liever wil ik dus het select statement al aanpassen.
Nu heb ik dit geprobeerd met de regel:
Maar dat genereerd dan de foutmelding:
Nu is programmeren een manier van denken IMO, maar misschien denk ik verkeerd.
Is er een manier om in het select statement al te kijken naar events die "nieuw" zijn ??
WMIDateStringToDate = overigens een simpele Function die het lange formaat omzet naar leesbaar
Die wscript.echo "nope" is overigens puur voor controle
Dit script is in VBScript, en ik query daarmee de WMI database van een Windows 2000 Server. (Ook NT4, maar das verder niet belangrijk)
Wat ik in weze doe is dit:
VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| For Each strServer In arrServers Set objWMIService = GetObject("winmgmts:\\" & strServer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select EventCode, LogFile, Message, SourceName, TimeGenerated, Type, User from Win32_NTLogEvent where Type = 'error' or Type = 'warning'",,48) For Each objItem in colItems if objItem.TimeGenerated > strDate then Wscript.Echo "EventCode = " & objItem.EventCode Wscript.Echo "Logfile = " & objItem.Logfile Wscript.Echo "Message = " & objItem.Message Wscript.Echo "SourceName = " & objItem.SourceName Wscript.Echo "TimeGenerated = " & WMIDateStringToDate(objItem.TimeGenerated) Wscript.Echo "Type = " & objItem.Type Wscript.Echo "User = " & objItem.User Else WScript.Echo "Nope" End If Next Next |
Hierin is strDate een string die de datum noteerd als 20040218120502 -1 dag
Omdat objItem.TimeGenerated ook in die vorm wordt gegeven.
Ik maak dus in regel (5) een selectie op de events die alleen in de afgelopen 24 uur zijn gebeurd.
Echter, wordt wel de gehele database doorlopen. En bij een server waar ook wordt geprint worden er nogal wat events gelogged. (Bovendien staat de eventlogfile size op 4096kb, want dat is hier policy)
Liever wil ik dus het select statement al aanpassen.
Nu heb ik dit geprobeerd met de regel:
code:
1
| Set colItems = objWMIService.ExecQuery("Select EventCode, LogFile, Message, SourceName, TimeGenerated, Type, User from Win32_NTLogEvent where Type = 'error' or Type = 'warning' and where TimeGenerated > " & "'" & strDate & "'" & "",,48) |
Maar dat genereerd dan de foutmelding:
code:
1
| (111, 2) (null): 0x80041017 |
Nu is programmeren een manier van denken IMO, maar misschien denk ik verkeerd.
Is er een manier om in het select statement al te kijken naar events die "nieuw" zijn ??
WMIDateStringToDate = overigens een simpele Function die het lange formaat omzet naar leesbaar
Die wscript.echo "nope" is overigens puur voor controle
offtopic:
Sorry voor de layout.. Gebeurt hier denk ik wel vaker
Sorry voor de layout.. Gebeurt hier denk ik wel vaker
[ Voor 21% gewijzigd door Equator op 18-02-2004 12:12 ]