שונים לווינדוס ישנם מספר רב של לוגים שונים, אך איך ניתן לאחזר אותם במהירות? הפקודה Get-WinEvent
יכולה לאחזר לוגים קלאסיים שונים של ווינדוס כמו הלוגים של המערכת והיישומים, לוגים שנוצרים על ידי טכנולוגיית יומן הארועים של ווינדוס, ואפילו לוגים של אירועי מעקב עבור ווינדוס (ETW)!
במאמר זה, למד כיצד להשתמש ב- Get-WinEvent
כדי לאחזר ולסנן ארועים מלוגים!
דרישות מוקדמות
כדי להתקדם, יש צורך רק בגרסה נוכחית של Windows 10 ובפוורשל 5.1 ומעלה. מאמר זה משתמש ב- Windows 10 ובפוורשל 7.1.
רשימת הלוגים הזמינים עם Get-WinEvent
קשה לדעת אילו רשומות לוג עשויות להיות נחוצות לך בלעדייך להכיר בכל הלוגים הזמינים. עם Get-WinEvent
, תוכל לרשום את כל הלוגים הזמינים במהירות באמצעות הפרמטר -ListLog
. ערך הפרמטר *
אומר ל- Get-WinEvent
לרשום את כל הלוגים בלעדייך לסינון. כפי שמוצג למטה, כל הלוגים נאספים, אך רק סט מוגבל של מאפיינים מוצגים באמצעות Select-Object
cmdlet.
לא כל הלוגים מופעלים כברירת מחדל. יתכן שתצטרך לפתוח את מציג האירועים, לאתר את הלוג וללחוץ ימנית כדי להפעיל אפשר את הלוג לפני שהאירועים יוצגו.

כל הלוגים לאחר Windows Vista נשמרים כקבצי
*.evtx
במקום פורמט ישן יותר של*.evt
. מאפייןIsClassicLog
מציין האם אירועי הלוג מוגדרים בקובץ הודעות Message File, בפורמט*.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
של יומן האירועים של האפליקציה.
כדי להקל על קריאת התוצאות, בחר רק את המאפיינים הנדרשים כדי לקרוא את הרשומות בקלות יותר. אחרת, הרשומות מקובצות לפי שם ספק, מה שהופך את עיבוד הרשימה של התוצאות למסובך.

מציאת אירועים עכשווים בווינדוס עם Get-WinEvent
עכשיו שאתה גישת אירועים מלוג האפליקציה הקלאסי, מה עם תוצאות מלוג אירועי ווינדוס חדש יותר, כמו Microsoft-Windows-WindowsUpdateClient/Operational
?
בניגוד ללוג אירועים קלאסי, כמו System
, הלוג Microsoft-Windows-WindowsUpdateClient/Operational
הוא לוג עכשווי, עם Get-WinEvent
עובד באותה הדרך כמו במטה.

מה עם קבלת האירועים הוותיקים ביותר בלבד? אף על פי שתוכל להפוך את התוצאות לסדר הפוך עם Sort-Object
, השתמש בפרמטר -Oldest
כדי לקבל את האירועים הראשונים 10
, כפי שמוצג למטה.
פקודת Get-WinEvent
עושה את הסינון בשבילך במקום להחזיר את כל התוצאות ולמיין, מה שנהוג לעשות איטי יותר בדרך כלל.

איחזור קבצי ETW (Event Tracing for Windows) עם Get-WinEvent
אולי יש לך קובץ מיוצא *.evtx
ממחשב אחר או שיש לך גיבוי של לוג קיים. תוכל לקרוא את הלוגים האלה עם ה-Cmdlet של Get-WinEvent
. אם יש צורך לשמור על לוגים לצורכי אודיט, Get-WinEvent
הוא דרך נהדרת לשאילת לוגים אלה עם cmdlets סטנדרטיים בתוך סקריפטים במהירות.
כדי להדגים איך לקבל רשומות יומן מקובץ *.evtx
, יש צורך בקובץ יומן שיוצא.
1. פתח את מציג האירועים ונווט אל יומן. בדוגמה זו, ניתן לעבור ליומן יישומים ושירותים → Windows PowerShell.

2. לאחר מכן, לחץ על הפריט שמור את כל האירועים כ… בתפריט פעולות.

3. שמור את הקובץ במיקום בדיסק שבו יתבצע קריאה על ידי הפקודה Get-WinEvent
.

עכשיו שיש לך קובץ יומן שיוצא, מסרו את מיקום קובץ היומן דרך הפרמטר -Path
כדי לקרוא את האירועים. בדוגמה המוצגת למטה, היומן של Windows PowerShell מיוצא לצרכים עתידיים.

סינון יומני האירועים של Windows באמצעות Get-WinEvent
אף על פי שניתן לסנן יומנים עם הפקודה הסטנדרטית Where-Object
, Get-WinEvent
מציע סינונים מובנים. על ידי החזרת כל התוצאות ואז סינון, עושה יותר עבודה ממה שנדרש. במקום זאת, תמיד עדיף לנסות לסנן במקור כמה שיותר.
הפקודה 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, יש להשתמש ביכולת הסינון ב-Event Viewer של Windows, כפי שמוצג למטה.
1. פתח את מציג האירועים ונווט ליומן, כמו יומני Windows → אפליקציה.

2. לאחר מכן, לחץ על הקישור "סנן יומן נוכחי" בחלונית הימנית.

3. הזן את הפרמטרים שברצונך להשתמש בהם כדי לסנן את היומן.

4. לחץ על הכרטיסייה XML והעתק את החלק המכיל בתוך התג Select.

5. כעת, העתק והדבק את התוכן שהעתקת עם הפרמטר -FilterXPath
. כעת תוכל לראות למטה שבאמצעות תחביר XPath שנמצא מתוך צופה יומן האירועים, ניתן לבנות שאילתה לסינון המידע הנחוץ בלבד.

FilterXPath
parameter.הצללה איך ליצור שאילתות XPath נמצאת מחוץ להיקף כתבה זו, אך הפורמט הבסיסי מוצג למטה. כאשר הפרמטר FilterXPath
מסנן תאריך, תראה הבדל גדול אחד: אתה צריך להשתמש בפורמט תאריך ספציפי יותר, yyyy-MM-ddTHH:mm:ss.fffZ
, שהתאריך חייב להוחזר ב-UTC, שמסומן על ידי המתג -AsUTC
.

סינון תוצאות יומן אירועים עם FilterXML
לבסוף, הפרמטר האחרון לסינון שזמין הוא הפרמטר -FilterXML
. בניגוד לפרמטרים -FilterXPath
ו--FilterHashTable
, פרמטר זה לוקח XML שלאחר מכן משמש לסינון האירועים. הפרמטר -FilterXML
מאפשר כללים מורכבים יותר, וכפי שמוצג למטה, יכול לשכפל את דוגמאות הסינון הקודמות.
כפי שמוצג בדוגמה הקודמת, ניתן לאחזר שאילתה מסודרת מראש מהיכולת של מציג האירועים → סנן יומן נוכחי. במקום לבחור רק בתוכן בתוך צומת ה־Select
, יש להשתמש בשאילתה שלמה. אין סננים אמיתיים שנבחרים, כפי שמסומן על ידי ה־*
בתוך צומת ה־Select
. זה יספק סימון כללי לדוגמה הבאה.

במקום ליצירת פקודת שורה אחת, יש להפריד את שאילתת ה־XML ולהקצות את הסימון למשתנה, $Query
, כפי שמוצג בדוגמה למטה. הקצאת השאילתה למשתנה מקלה על השימוש ומשפרת קריאות. לאחר מכן, יש להעביר את המשתנה $Query
לפרמטר -FilterXML
של Get-WinEvent
.
כפי שמוצג למטה, ניתן לראות את תוצאות שאילתה המורכבת יותר שמחזירה את כל האירועים מהיום הזה ושמאוחסנים ביומן האפליקציה Application
.

FilterXML
works.סיכום
פקודת ה־Get-WinEvent
עושה עבודה קצרה של יישומי שאילתות במקורות יומן אירועים מרובים עם יכולות סינון חזקות. מניפולציה עד לפתרון בעיות, פקודת ה־Get-WinEvent
היא הוספה חיונית לתיקיית הכלים של מנהלי המערכת!