يحتوي نظام Windows على العديد من سجلات الأحداث المختلفة، ولكن كيف يمكنك الحصول عليها بسرعة؟ يمكن لأمر الـ Get-WinEvent
استرجاع سجلات الأحداث الكلاسيكية في Windows مثل سجلات النظام والتطبيقات، وسجلات يتم إنشاؤها بواسطة تقنية سجل الأحداث في Windows، وحتى سجلات تتبع الأحداث لنظام التشغيل Windows (ETW)!
في هذا المقال، تعرّف على كيفية الاستفادة من Get-WinEvent
لاسترجاع الأحداث وتصفيةها من سجلات الأحداث!
المتطلبات المسبقة
لمتابعة العملية، تحتاج فقط إلى إصدار حديث من Windows 10 وPowerShell 5.1 أو أحدث. يستخدم هذا المقال Windows 10 وPowerShell 7.1.
عرض السجلات المتاحة باستخدام Get-WinEvent
من الصعب معرفة الإدخالات في السجل التي قد تحتاجها دون معرفة جميع السجلات المتاحة. باستخدام Get-WinEvent
، يمكنك عرض جميع السجلات المتاحة بسرعة باستخدام معامل -ListLog
. قيمة المعامل *
تخبر Get-WinEvent
بعرض جميع السجلات دون تصفية. كما يتم استرجاع جميع السجلات كما هو موضح أدناه، ولكن يتم عرض مجموعة محدودة من الخصائص باستخدام Select-Object
cmdlet.
ليست جميع السجلات ممكنة بشكل افتراضي. قد تحتاج إلى فتح مُعاين الأحداث، وتحديد السجل، والنقر بزر الماوس الأيمن لتمكين السجل قبل ظهور الأحداث.

جميع السجلات بعد ويندوز فيستا تُحفظ كملفات \*.evtx بدلاً من التنسيق القديم \*.evt. تعرض خاصية
IsClassicLog
ما إذا كانت أحداث السجل محددة في ملف الرسائل بتنسيق \*.mc أم في توثيق بتنسيق \*.xml.
خاصية مثيرة للاهتمام هي LogMode
، التي قد لاحظت أنها عادةً ما تكون مضبوطة على Circular
.
Circular
– قم بالكتابة فوق أقدم إدخال سجل بمجرد ملءه.Retain
– احتفظ بجميع الأحداث حتى يمتلئ السجل وتتوقف عن تسجيل الأحداث حتى يتم الافراج عنه.AutoBackup
– نسخ احتياطي تلقائيًا وأرشفة سجلات الأحداث بمجرد ملءها.

أخيرًا، عند النظر إلى خاصية LogType
، هناك عدة أنواع مختلفة من السجلات. تعمل هذه الخاصية بشكل أكبر كخاصية تصنيفية، ولكنها عادة ما تُبين كيفية استخدام السجل وأنواع الأحداث المعروضة.
- إداري – مخصص في المقام الأول للمستخدمين النهائيين والمستخدمين الإداريين.
- تحليلي – عادةً ما يكون سجل حجم كبير، يهدف إلى وصف عمليات البرنامج.
- تصحيح – مخصص للمطورين الذين يحتاجون إلى فهم عميق للتفاصيل الداخلية للبرنامج.
- تشغيلي – حدث يحدث أثناء التشغيل ويكون مفيدًا لتشخيص الحوادث وتشغيل العمليات.

قائمة موفري سجل الحدث
الآن بعد أن لديك فهماً قويًا للسجلات المختلفة وخصائصها، من المفيد فهم ما هو موفر سجل الحدث. الموفر، في مصطلح سجل الحدث، هو مصدر لحدث ما.
موفرو سجل الحدث فريدة ومرتبطة بكل سجل، مثل سجلات التطبيقات أو النظام، وسيكون مصدر الاسم حيث ينبثق الحدث.
ربما تود العثور على مشاكل عند تصفية السجلات، وقد تكون مهتمًا فقط بالمشاكل التي يتم تقديمها من موفر معين. لعرض ما هي الموفرات المتاحة، استخدم المعلمة -ListProvider
. كما هو موضح أدناه، *
يقوم بسرد جميع الموفرين المتاحين وما هي السجلات التي يتم ربط الموفرات بها، مثل Windows PowerShell أو System.

ربما ترغب فقط في إدراج مزودين متاحين لسجل معين، مثل System
. للقيام بذلك، يمكنك تصفية الأحداث باستخدام أمر Where-Object
باستخدام قيم خاصية LogLinks
. تعرض خاصية LogLinks
السجلات الحدثية المرتبطة كقائمة.
لتصفية السجلات المطلوبة باستخدام Where-Object
، استخدم مشغل المقارنة -In
لتصفية الأحداث فقط التي تحتوي على System
في قيمة خاصية LogLinks
. وأخيرًا، استخدم Format-Table -AutoSize
لجعل قراءة الناتج أسهل، كما هو موضح أدناه.

استرداد السجلات الحدثية الكلاسيكية باستخدام Get-WinEvent
الخطوة الأولى في حل مشكلة ويندوز هي استرداد سجل التطبيق أو النظام، والذي يتمثل في سجلات الحدث الكلاسيكية. في المثال الموضح أدناه، ستقوم بإسترداد أول 100
حدث باستخدام معلمة -MaxEvents
من سجل الحدث التطبيق.
لجعل قراءة النتائج أسهل، حدد فقط الخصائص المطلوبة لقراءة الإدخالات بسهولة. وإلا، يتم تجميع الإدخالات حسب اسم مزود الخدمة، مما يجعل تجزئة قائمة النتائج صعبة.

العثور على أحداث Windows الحديثة باستخدام Get-WinEvent
الآن بعد أن استرجعت الأحداث من سجل التطبيقات الكلاسيكي، ماذا عن النتائج من سجل أحداث Windows الأحدث، مثل Microsoft-Windows-WindowsUpdateClient/Operational
؟
على عكس سجل الأحداث الكلاسيكي، مثل System
، فإن Microsoft-Windows-WindowsUpdateClient/Operational
هو سجل حديث، ويعمل Get-WinEvent
بنفس الطريقة كما هو موضح أدناه.

ماذا عن الحصول على أقدم الأحداث فقط؟ على الرغم من أنه يمكنك عكس ترتيب النتائج باستخدام Sort-Object
، استخدم معلمة -Oldest
لاسترجاع أول 10
أحداث، كما هو موضح أدناه.
يقوم أمر Get-WinEvent
بعملية التصفية بدلاً من إرجاع جميع النتائج والفرز، وهو أمر أبطأ عادةً.

استرجاع ملفات تتبع الأحداث لنظام Windows (ETW) باستخدام Get-WinEvent
ربما لديك ملف *.evtx
مصدره جهاز كمبيوتر آخر أو لقد قمت بنسخ احتياطي لسجل موجود. يمكنك قراءة تلك السجلات باستخدام cmdlet Get-WinEvent
. إذا كنت بحاجة إلى الاحتفاظ بالسجلات لأغراض التدقيق، فإن Get-WinEvent
هو طريقة رائعة للاستعلام عن تلك السجلات باستخدام cmdlets قياسية ضمن النصوص بسرعة.
لعرض استرداد سجل الدخول من ملف *.evtx
، تحتاج إلى ملف سجل تم تصديره.
1. قم بفتح مراقب الأحداث وانتقل إلى سجل. في هذا المثال، انتقل إلى سجل التطبيقات وخدمات السجلات → PowerShell في Windows.

2. بعد ذلك، انقر فوق عنصر القائمة حفظ جميع الأحداث ك… في اللوحة الإجراءات.

3. قم بحفظ الملف في مكان على القرص لاسترجاعه بواسطة أمر Get-WinEvent
.

الآن بعد أن قمت بتصدير ملف سجل، قم بتمرير موقع ملف السجل عبر معلمة -Path
لقراءة الأحداث. في المثال المعروض أدناه، يتم تصدير سجل PowerShell في Windows للاستهلاك لاحقًا.

تصفية سجلات الأحداث في Windows باستخدام Get-WinEvent
على الرغم من أنه يمكنك تصفية السجلات باستخدام cmdlet Where-Object
القياسي، يقدم Get-WinEvent
فلاتر مدمجة. من خلال إرجاع جميع النتائج ومن ثم تصفيةها، يتم إجراء مزيد من العمل من اللازم. بدلاً من ذلك، يجب أن تحاول دائمًا تصفية في المصدر قدر الإمكان.
يوفر cmdlet Get-WinEvent
ثلاث معلمات لمساعدتك في التصفية من خلال آلاف الأحداث تسمى -FilterHashTable
، -FilterXPath
، و -FilterXML
. كل معلمة تقوم عمومًا بنفس المهمة فقط بطريقة مختلفة.
تصفية سجلات الأحداث باستخدام FilterHashTable
المعلمة -FilterHashTable
تقوم بتصفية المحتوى استنادًا إلى الخصائص المطابقة، مثل LogName
. بدلاً من استخدام المعلمة -LogName
للتصفية حسب سجل معين، يمكنك بدلاً من ذلك استخدام جدول تجزئة، مثل @{'LogName' = 'Application'}
، الذي سيتوافق مع خاصية الحدث LogName
.
المثال الموضح أدناه يوفر جدول تجزئة للمعلمة -FilterHashTable
الذي يبحث فقط عن سجل التطبيقات وببدء الوقت الذي تكون فيه جميع الأحداث بعد منتصف الليل من اليوم الحالي، Get-WinEvent
يقوم بإرجاع النتائج بسرعة.

FilterHashTable
parameter.قارن بين سرعات التصفية لنفس الأمر أعلاه مع أمر مصفى من خلال Where-Object
بدلاً من استخدام المعلمة -FilterHashTable
على الخط الأنابيب. كما ترى، الأمر الذي يستخدم Where-Object
أبطأ بكثير من تلك التي تستخدم المعلمة -FilterHashTable
.

FilterHashTable
and Where-Object
.تصفية سجلات الأحداث باستخدام المعلمة FilterXPath
تُخزن إدخالات سجل الأحداث كملفات XML، وبالتالي يمكنك استخدام لغة XPath، وهي لغة استعلام XML، لتصفية إدخالات السجل. من خلال أداء نفس الأمر المستخدم أعلاه وترجمته إلى XPath، يمكنك تحقيق نفس النتائج.
لصياغة استعلام XPath، استخدم القدرة على التصفية في مستعرض أحداث Windows، كما هو موضح أدناه.
1. افتح عارض الأحداث وانتقل إلى سجل، مثل سجل سجلات Windows → التطبيقات.

2. بعد ذلك، انقر على رابط تصفية السجل الحالي في الجزء الأيمن من النافذة.

3. أدخل المعايير التي ترغب في استخدامها لتصفية السجل.

4. انقر فوق علامة XML وانسخ القسم الذي يتضمن داخل علامة التحديد.

5. الآن، قم بنسخ ولصق المحتوى المنسوخ مع المعلمة -FilterXPath
. يمكنك الآن أن ترى أدناه باستخدام بنية XPath المستخدمة من مستعرض سجل الأحداث، يمكنك بناء استعلام لتصفية فقط المعلومات الضرورية.

FilterXPath
parameter. الانغماس في كيفية صياغة استعلامات XPath خارج نطاق هذه المقالة، ولكن يتم عرض الشكل الأساسي أدناه. عندما تقوم المعلمة FilterXPath
بتصفية تاريخ، سترى فارقًا كبيرًا واحدًا: تحتاج إلى استخدام تنسيق تاريخ أكثر تحديدًا، yyyy-MM-ddTHH:mm:ss.fffZ
، الذي يجب أن يتم إرجاع التاريخ في توقيت عالمي منسق، وهو ما يشير إليه التبديل -AsUTC
.

تصفية نتائج سجل الأحداث باستخدام FilterXML
وأخيرًا، المعلمة الأخيرة المتاحة للتصفية هي المعلمة -FilterXML
. على عكس المعلمتين -FilterXPath
و -FilterHashTable
، تأخذ هذه المعلمة XML التي يتم استخدامها بعد ذلك لتصفية الأحداث. تسمح المعلمة -FilterXML
بقواعد أكثر تعقيدًا، وكما هو موضح أدناه، يمكن أن تقوم بتكرار الأمثلة السابقة للتصفية.
كما هو موضح في المثال السابق، يمكنك الحصول على استعلام معين مُعدّ مسبقًا من القدرة على عارض الأحداث → تصفية السجل الحالي. بدلاً من اختيار المحتوى فقط في العقدة Select
، ستستخدم الاستعلام بأكمله. لم يتم اختيار مرشحات فعلية، كما هو مشار إليه بوجود علامة *
في عقدة Select
. سيوفر هذا العلامات العامة للمثال التالي.

بدلاً من إنشاء أمر في سطر واحد، افصل أولاً الاستعلام XML وقم بتعيين العلامات لمتغير، $Query
، في المثال أدناه. تعيين الاستعلام إلى متغير يجعل الأمر أكثر سهولة في الاستخدام والقراءة. بعد ذلك، قم بتمرير متغير $Query
إلى المعامل -FilterXML
لـ Get-WinEvent
.
كما هو موضح أدناه، سترى نتائج الاستعلام المعقد أكثر، والذي يُرجع جميع الأحداث من ذلك اليوم والتي تم تخزينها في سجل Application
.

FilterXML
works.الختام
يجعل cmdlet Get-WinEvent
عمل قصير من استعلام مصادر سجل الأحداث المتعددة باستخدام قدرات تصفية قوية. من التدقيق إلى حل المشاكل، يعتبر cmdlet Get-WinEvent
إضافة أساسية لأي مجموعة أدوات مسؤولي النظام!