כל מנהל מערכת של Windows יכול להכיר בלוג אירועים של Windows. באמצעות ה-cmdlet הזה ב-PowerShell, מנהלי מערכות יכולים לפענח הרבה אירועים בו זמנית במחשבים רבים יחד. זה משחרר את מנהלי המערכת מהצורך ללחוץ סביב ב-Event Viewer כדי לנסות למצוא את הסינון הנכון לשימוש ולקבוע באופן מדויק איפה האירוע הקריטי הזה מאוחסן. אולם, Get-EventLog
יש לו חסרונות שתראו.
רשומת לוגים עם Get-EventLog
ה-cmdlet Get-EventLog
זמין בכל הגרסאות המודרניות של Windows PowerShell. בשימוש הכי ישיר שלו, על ה-cmdlet הזה לקבל לוג אירועים לשאילתא שהוא יציג את כל האירועים באותו לוג אירועים.
אך מה קורה אם אתם לא יודעים את שם לוג האירועים מראש? במקרה כזה, עלינו לזהות את כל לוגי האירועים שזמינים במחשב המקומי שלנו. אנו עושים זאת על ידי השימוש בפקודה Get-EventLog -List
.

אתם יכולים לראות שיש לי מספר לוגים אירועים במערכת המקומית שלי כעת, אך ייתכן ואתם שואלים איפה השאר? יש עשרות לוגים אחרים שמופיעים באפליקציות ובשירותים ב-Event Viewer. למה הם לא כאן?
אם אתם צריכים את האירועים ההם, למרבה הצער, Get-EventLog
לא יעבוד. במקום זאת, יהיה עליכם לבדוק את Get-WinEvent. ה-cmdlet Get-EventLog
יכול להיחשב כ-cmdlet מותרך בנקודה זו, אך זהו אחד שאני עדיין משתמש בו בתדירות רבה פשוט כי זה כל כך קל לשימוש.
שאילתת אירועים עם 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
מקבל תאריך/שעה, אז אם אני רוצה למצוא רק את האירועים בלוג היישום שקרו אחרי 26/1/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 בתסריט ממשי? אז אתה במזל! למטה יש דוגמה מתקדמת של Get-EventLog
שאתה יכול להוריד ולהשתמש בה היום!
עמידום
הפקודה Get-EventLog
היא פקודה מצוינת לשימוש כאשר תמצא את עצמך זקוק לשאילתת אחד מלוגי הארועים הנפוצים במהירות. זה קל לשימוש ומספק אפשרות לסינון בסיסית. עם זאת, אם יש לך צורך לבצע חקירת לוג ארוע מעמיקה, ייתכן שהפקודה Get-WinEvent
תעבוד יותר טוב, אך זה קצת יותר מורכב ולפעמים דורשת הבנה של תחביר כמו XPath.