2012-03-15 6 views
0

WMI Win32_NTLogEventクラスからデータを読み取ろうとしていますが、TimeWrittenが日付範囲内にあるインスタンスのみを読み取る必要があります。WMIクエリの日付フィルタ

Iは、純粋なWMIクエリを可能にするPython用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")

問題は、私の日付引数を受け入れることができないようです。私はむしろ曖昧なWMI styleなど、いくつかの日付形式を試してみた、と私の唯一の成功は本当に助けにはならない=演算子、と上記の第二のアプローチを使用していた:私は、結果セットをフィルタリングすることができ知っ

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

を私のPythonコードでは、私はかなりこれがクエリで行うことができると確信しています。私はちょうど何かが足りないと思う。誰でも提案がありますか?

ありがとうございました。ので、多分、私のpython(しかしi know a couple of things about the WMI)についてあまり知らない:

+0

日付でフィルタリングするコード(WQL文)を表示できますか? – RRUZ

+0

編集して、動作したクエリを含めるようにしました。生のWQLと同じものを試すとエラーが出ます。 – Colin

答えて

1

あなたのWQL文が

はこの1つ

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

注意することで、このコード

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

を交換してください間違っています別の方法で特殊文字をエスケープする必要があります。

+0

ハハ、ありがとう。私はそこにコンマを持っていたことに気付かなかった。 – Colin