WMIからWMIのWin32_ntlogeventクラスを照会するときは、コンピューターまたはGMTの現地時間に基づいた時間系プロパティですか?
-
28-09-2019 - |
質問
いくつかのドメインコントローラーのEventLogを介していくつかのchurningを行っているC#Windowsサービスを作成しています。それらのいくつかはWindows Server 2003、一部はWindows Server 2008です。サービスが停止すると、ログで中断したところから再開しようとしています。ではなくこれを行うために
SELECT * FROM Win32_NTLogEvent WHERE --criteria for events I am looking for
私がやっている
SELECT * FROM Win32_NTLogEvent WHERE TimeGenerated = --some date AND --criteria for events I am looking for
ある時点で、私はタイムゲナー化されたフィールドがサーバーの現地時間にあると確信しましたが、今ではWindows 2008サーバーがGMTを使用してその時間を記録しているようです。これが2つのオペレーティングシステムの機能方法との間で実際に異なる場合、またはこれが構成の問題である場合、誰かが少し点灯することができますか?
解決
Windowsタイムスタンプは常にUTCで記録されます。これらは、イベントビューアーやエクスプローラー(ファイル時間)など、データを見るために使用するGUIプログラムでのみ現地時間に変換されます。この動作は、夏時間の移行のランダム障害を避けるために重要です。
他のヒント
さらに、Windows Server 2008の前のバージョンでは、現地時間にはタイムグネレーションが返されましたが、他の人が気づいているため、Server 2008でGMTに変更されたようです。
このようなものが役立つかもしれません:
("Select * from Win32_NTLogEvent Where Logfile = 'Application' AND EventCode = '999' AND Message Like '%message%' AND TimeGenerated = '201202210000000000.000000+***'")
TimeGenerated
構文は後方にセットアップされているので、上記の例では yearmonthdaytimeminutesseconds.000000+\***
前の 000000+\***
必要です。
お役に立てれば。