Vbscript 将WMI DateTime与查询中的字符串进行比较

Vbscript 将WMI DateTime与查询中的字符串进行比较,vbscript,wmi,utc,wql,Vbscript,Wmi,Utc,Wql,我试图查询Win32\u NTLogEvent,以查找在上次运行查询时的条目。我尝试使用字符串变量,以便每次运行脚本时都可以更改它。但生成的集合将返回null。我已经查找了有关WMI日期时间的信息,并在比较中使用它们。尽管我发现了一些似乎相互矛盾的信息(即一些源使用人类可读性直接与UTC进行比较,而其他源则没有)。我尝试了UTC字符串和人类可读字符串。但两者似乎都不起作用。我认为这是因为我需要比较datetime和datetime,而不是字符串和字符串。尽管许多消息来源似乎都说,在这种情况下,一

我试图查询Win32\u NTLogEvent,以查找在上次运行查询时的条目。我尝试使用字符串变量,以便每次运行脚本时都可以更改它。但生成的集合将返回null。我已经查找了有关WMI日期时间的信息,并在比较中使用它们。尽管我发现了一些似乎相互矛盾的信息(即一些源使用人类可读性直接与UTC进行比较,而其他源则没有)。我尝试了UTC字符串和人类可读字符串。但两者似乎都不起作用。我认为这是因为我需要比较datetime和datetime,而不是字符串和字符串。尽管许多消息来源似乎都说,在这种情况下,一个字符串到一个字符串是可行的。但是,即使我是对的,我也不确定在查询中如何转换Win32\u NTLogEvent中每个对象的时间

这是我剧本的相关部分。注释掉的UTC就在那里,因为如果必须返回UTC,我不想重新键入日期:

strTimeMin = "01/01/1970/0:00:00"
'19700101000000.000000-480
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

'Querying Event Logs

Set colLoggedEvents = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_NTLogEvent WHERE Logfile = 'system' AND "_
 & "Type = 'Error' AND TimeGenerated > " & strTimeMin & "")

谢谢你的帮助

UTC字符串应该可以正常工作。但是,由于它们是字符串,您需要在WMI查询中将它们放在单引号之间:

computer = "..."
minTime  = "20140801000000.000000-000"

Set wmi = GetObject("winmgmts:\\" & computer & "\root\cimv2")
qry = "SELECT * FROM Win32_NTLogEvent " & _
      "WHERE LogFile = 'System' AND Type = 'Error' " & _
      "AND TimeGenerated > '" & minTime & "'"
For Each evt In wmi.ExecQuery(qry)
  ...
Next

可以谢谢我还是WQL的新手。所以我真的不知道该怎么办。