عند الاستعلام عن فئة Win32_ntlogevent من WMI مع WQL هو الخاصية التي يتم تنشيطها الزمنية استنادًا إلى التوقيت المحلي للكمبيوتر أو GMT؟

StackOverflow https://stackoverflow.com/questions/3063289

  •  28-09-2019
  •  | 
  •  

سؤال

أنا أكتب خدمة C# Windows التي تقوم ببعض الانتقاء عبر LeventLog على عدد قليل من وحدات التحكم في المجال. بعضها عبارة عن 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 لتسجيل ذلك الوقت. هل يمكن لأي شخص إلقاء بعض الضوء على ما إذا كان هذا مختلفًا حقيقيًا بين الطريقة التي يعمل بها نظام التشغيل أو هل هذه مشكلة تكوين؟

هل كانت مفيدة؟

المحلول

يتم تسجيل طوابع الوقت Windows دائمًا في UTC. سيتم تحويلها فقط إلى وقت محلي في أي برنامج واجهة المستخدم الرسومية التي تستخدمها للنظر في البيانات ، مثل عارض الحدث أو المستكشف (لأوقات الملف). هذا السلوك مهم لتجنب الفشل العشوائي على انتقالات وقت التوفير في وضح النهار.

نصائح أخرى

بالإضافة إلى ذلك ، يبدو أنه في الإصدارات قبل أن يتم إرجاع الوقت الذي تم إنشاؤه الزمني في Windows Server 2008 في التوقيت المحلي ، ولكن تم تغييره إلى GMT في Server 2008 ، كما لاحظ آخرون.

قد يكون شيء من هذا القبيل مفيدًا:

("Select * from Win32_NTLogEvent Where Logfile = 'Application' AND EventCode = '999' AND Message Like '%message%' AND TimeGenerated = '201202210000000000.000000+***'")

ال TimeGenerated بناء الجملة يتم إعداده للخلف ، لذا في المثال أعلاه yearmonthdaytimeminutesseconds.000000+\*** السابقة 000000+\*** وهناك حاجة.

أتمنى أن يساعدك هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top