كل مسؤول نظام Windows على الأرجح ملم بسجل الأحداث في Windows. استخدام هذا الأمر في PowerShell يسمح لمسؤولي النظام بتحليل العديد من الأحداث في آن واحد عبر العديد من الكمبيوترات دفعة واحدة. يعفيهم هذا الأمر من النقر حول القارئ للأحداث في محاولة لمعرفة التصفية المناسبة لاستخدامها وتحديد مكان الحدث الحرج بالضبط. ومع ذلك، فإن Get-EventLog
لديه عيوبه التي ستراها.
قائمة سجلات الأحداث باستخدام Get-EventLog
أمر Get-EventLog
متاح في جميع الإصدارات الحديثة من Windows PowerShell. في استخدامه الأكثر بساطة، يحتاج هذا الأمر إلى سجل حدث للاستعلام عنه ثم يعرض جميع الأحداث في ذلك السجل.
ولكن ماذا لو لم تكن تعرف اسم سجل الحدث في المقام الأول؟ في هذه الحالة، نحتاج إلى معرفة جميع سجلات الأحداث المتاحة على جهاز الكمبيوتر المحلي لدينا. نفعل ذلك باستخدام الأمر Get-EventLog -List
.

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

بشكل افتراضي، سترى فقط ست خصائص في الإخراج:
Index
Time
EntryType
Source
InstanceId
Message
في الواقع، Get-EventLog
يعيد 16 منها. السبب في أنك ترى فقط ستة هو قواعد تنسيق PowerShell التي تحدد الإخراج. فيما يلي مثال على الإخراج الفعلي الذي تم العثور عليه عن طريق توجيه Get-EventLog
إلى Select-Object
وتحديد جميع الخصائص.

التصفية باستخدام Get-EventLog
من المحتمل أننا عند البحث عن الأحداث، لا نحتاج إلى جميع الأحداث. بدلاً من ذلك، نحتاج فقط إلى بعضها. في هذه الحالة، نحتاج إلى تصفية الأحداث المعينة. Get-EventLog
لديه بعض الطرق المختلفة للقيام بذلك. يمكن لـ Get-EventLog
تصفية استنادًا إلى الطابع الزمني، ونوع الإدخال، ومعرّف الحدث، والرسالة، والمصدر، واسم المستخدم. يتولى ذلك معظم طرق العثور على الأحداث.
لتوضيح عملية التصفية، ربما أقوم بالاستعلام عن الأحداث بشكل دوري، وأريد العثور على أحدث عشرة أحداث. في هذه الحالة، يمكنني استخدام المعامل Newest
وتحديد عدد الأحداث التي أود رؤيتها. سيقوم Get-EventLog -LogName Application -Newest 10
بإرجاع آخر عشرة أحداث فقط.
ربما أريد العثور على جميع الأحداث بعد نقطة زمنية معينة. لهذا، لدينا المعامل After
. يأخذ المعامل After
تاريخ/وقت، لذا إذا كنت أود العثور فقط على الأحداث داخل سجل التطبيق التي حدثت بعد 1/26/19 10:17 صباحًا، يمكنني فعل ذلك باستخدام Get-EventLog -LogName Application -After '1/26/19 10:17'
. يمكننا أيضًا أداء نفس العملية ولكن اختيار الأحداث التي حدثت قبل تاريخ معين باستخدام، قد تكون قد تخمنت، المعامل Before
.
يحتوي المعامل Get-EventLog
على العديد من الطرق المختلفة للتصفية غير المعتمدة على الطابع الزمني. يمكننا أيضًا تصفية الأحداث بناءً على سمات أخرى مثل معرف الحدث (معرف الحالة) والرسالة التي تميل إلى كونها سمات شائعة للبحث عنها. ربما أعرف أنني أبحث عن حدث لديه معرف 916؛ سنمرر 916 إلى المعامل InstanceId
.
يمكننا دمج التصفيات أيضًا. ربما أحصل على الكثير من الأحداث المرتجعة بمعرف 916، لكنني أريد تلك الأحداث التي تحتوي على السلسلة svchost في الرسالة. في هذه الحالة، يمكننا إضافة المعامل Message
إلى Get-EventLog
وتحديد بطاقة تعريفية مثل svchost.
سكريبت إضافي!
هل تحتاج إلى مثال رائع على استخدام Get-EventLog في سيناريو واقعي للنص؟ إذا كان الأمر كذلك، فأنت محظوظ! فيما يلي حالة استخدام متقدمة لـ \(\text{Get-EventLog}\) يمكنك تنزيلها واستخدامها اليوم!
ملخص
يعد أمر Get-EventLog
أمرًا رائعًا للاستخدام إذا كنت بحاجة إلى استعلام أحد سجلات الأحداث الشائعة بسرعة. إنه سهل الاستخدام ويوفر بعض القدرة على التصفية الأساسية. ومع ذلك، إذا كنت بحاجة إلى التحقيق في سجل الأحداث بعمق، فإن أمر Get-WinEvent
قد يكون أفضل، ولكنه أكثر صعوبة في الاستخدام أحيانًا وقد يتطلب معرفة ببعض بنى الجمل مثل XPath.