VBScript-不知道为什么我的参数与变量的使用方式不同

VBScript-不知道为什么我的参数与变量的使用方式不同,vbscript,variables,arguments,Vbscript,Variables,Arguments,我编写了一个VBScript来枚举某一天事件日志中的事件 第一个查询从NT事件日志中选择今天日期和昨天日期之间的事件 Set colEvents = objWMIService.ExecQuery _ ("Select * from Win32_NTLogEvent Where TimeWritten >= '" _ & dtmStartDate & "' and TimeWritten < '" & dtmEndDate &

我编写了一个VBScript来枚举某一天事件日志中的事件

第一个查询从NT事件日志中选择今天日期和昨天日期之间的事件

Set colEvents = objWMIService.ExecQuery _
    ("Select * from Win32_NTLogEvent Where TimeWritten >= '" _ 
        & dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "'") 
我已将以下内容放入脚本中,它可以工作,但是我希望通过命令行使用参数,即EventLogCheck.vbs EventNumber日志文件,但如果使用脚本的参数secion,则不会返回任何项。这让我快发疯了。下面的完整脚本使用了变量,我已经注释掉了arguments部分,但是您可以取消注释它们并使用它。我做错了什么?谢谢你的帮助

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

传递的参数被视为字符串类型。但是,EventNu应该是一个整数。因此,必须使用和将参数转换为正确的类型:

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
EventNu = CInt(WScript.Arguments.Item(0))
EventLog = CStr(WScript.Arguments.Item(1))