WMI查询日期过滤器

时间:2012-03-15 23:52:02

标签: python windows wmi

我正在尝试从WMI Win32_NTLogEvent类中读取数据,但我只想读取TimeWritten属于日期范围的实例。

我正在使用Python的WMI模块,它允许纯WMI查询(1)或参数化方法(2):

  1. c.query("Select SourceName, Message from Win32_NTLogEvent where EventType =1, Logfile = \"Application\"")

  2. c.Win32_NTLogEvent(EventType =1, Logfile = "Application")

  3. 问题是,我似乎无法接受我的日期参数。我已经尝试了几种日期格式,包括相当模糊的WMI style,我唯一的成功就是使用上面的第二种方法和=运算符,这实际上并没有帮助:

    c.Win32_NTLogEvent(EventType =1, Logfile = "Application", TimeWritten = "20110421013749.000000-000")
    

    我知道我可以在我的Python代码中过滤结果集,但我相当确定这可以在查询中完成。我想我只是错过了一些东西。有人有建议吗?

    感谢。

1 个答案:

答案 0 :(得分:1)

你的WQL句子错了

替换此代码

c.query("Select SourceName, Message from Win32_NTLogEvent where EventType =1, Logfile = \"Application\"")

这一个

c.query("Select SourceName, Message from Win32_NTLogEvent where EventType =1 AND Logfile = \"Application\" AND TimeWritten<=\"20110421013749.000000-000\" ")

注意:我对python(但i know a couple of things about the WMI)了解不多,所以也许你必须以另一种方式逃避特殊字符。