2009-05-20 8 views
2

特定の日にイベントログからイベントを列挙するためのVBScriptを書いています。私は、ログファイルからイベントIDを抽出する上VBScript - 私の引数が変数と同じ方法で使用されない理由を知らない

最初のクエリは、クエリから続いて、今日の日付と昨日の日付の間でNTイベントログのイベントから

Set colEvents = objWMIService.ExecQuery _ 
    ("Select * from Win32_NTLogEvent Where TimeWritten >= '" _ 
     & dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "'") 

を選択します。

For Each objEvent in colEvents 
    If objEvent.Eventcode = EventNu And (objEvent.LogFile = EventLog) Then 

私はスクリプトに次のように置かれているし、それは動作しますが、しかし、私は、コマンドライン(すなわちEventLogCheck.vbsイベント番号ログファイル)を経由しての代わりに、引数を使用したいが、私は、スクリプトの引数secionにはアイテムを使用しない場合あり戻ってきた。これは私をナットにしている。以下の完全なスクリプトは変数を使用していますが、私は引数のセクションをコメントアウトしていますが、それらのコメントを外して再生することができます。何が間違っているのですか?助けてくれてありがとう!

Const CONVERT_TO_LOCAL_TIME = True 
Dim EventLog 

EventNu = 18 
EventLog = "System" 

'Input from the command line 
'If Wscript.Arguments.Count <= 1 Then 
' Wscript.Echo "Usage: EventLogCheck.vbs EventNumber LogFile" 
' Wscript.Quit 
'End If 

'EventNu = WScript.Arguments.Item(0) 
'EventLog = WScript.Arguments.Item(1) 

'For Each Computer In Wscript.Arguments 

Set dtmStartDate = CreateObject("WbemScripting.SWbemDateTime") 
Set dtmEndDate = CreateObject("WbemScripting.SWbemDateTime") 
'DateToCheck = CDate("5/18/2009") 
DateToCheck = date 
dtmStartDate.SetVarDate DateToCheck, CONVERT_TO_LOCAL_TIME 
dtmEndDate.SetVarDate DateToCheck + 1, CONVERT_TO_LOCAL_TIME 

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set colEvents = objWMIService.ExecQuery _ 
    ("Select * from Win32_NTLogEvent Where TimeWritten >= '" _ 
     & dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "'") 

For Each objEvent in colEvents 
If objEvent.Eventcode = EventNu And (objEvent.LogFile = EventLog) Then 
    'Wscript.Echo "Category: " & objEvent.Category 
    Wscript.Echo "Computer Name: " & objEvent.ComputerName 
    Wscript.Echo "Event Code: " & objEvent.EventCode 
    Wscript.Echo "Message: " & objEvent.Message 
    ' Wscript.Echo "Record Number: " & objEvent.RecordNumber 
    ' Wscript.Echo "Source Name: " & objEvent.SourceName 
    Wscript.Echo "Time Written: " & objEvent.TimeWritten 
    Wscript.Echo "Event Type: " & objEvent.Type 
    ' Wscript.Echo "User: " & objEvent.User 
    Wscript.Echo objEvent.LogFile 
    End if 
Next 
'Next 
WScript.Echo EventNu 
WScript.Echo EventLog 

答えて

3

渡される引数は、文字列型として扱われます。ただし、EventNuは整数でなければなりません。そのため、引数を正しいタイプに変換する必要があります。CIntCStr

EventNu = CInt(WScript.Arguments.Item(0)) 
EventLog = CStr(WScript.Arguments.Item(1)) 
+0

OMGが機能しました。多くのありがとう。 – Nasa

関連する問題