0

前回クエリを実行してからのエントリについて Win32_NTLogEvent をクエリしようとしています。スクリプトを実行するたびに変更できるように、文字列変数を使用してみました。しかし、生成されたコレクションに対して null が返されます。WMI DateTimes についてできることを調べ、それらを比較に使用しました。一見矛盾する情報をいくつか見つけましたが(つまり、人間が読み取れる情報を使用してUTCと直接比較するソースとそうでないソースがあります)。UTC 文字列と人間が読める文字列を試しました。しかし、どちらも機能していないようです。文字列と文字列ではなく、日時と日時を比較する必要があるためだと思います。多くの情報源は、この場合、文字列から文字列への変換が機能すると言っているようです。でも、たとえ私が正しいとしても、私は'

これが私のスクリプトの関連部分です。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 & "")

助けてくれてありがとう!

4

1 に答える 1

2

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
于 2014-08-07T22:18:52.580 に答える