זמן אתחול וזמן פעילות של Windows 10: תובנות PowerShell

זמן הפעלה של Windows הוא מדידה שמנהלי שרתים רבים משתמשים בה לפתרון בעיות יומיומיות שעשויות להתעורר בסביבה. במאמר זה, תלמד כיצד לבדוק את זמן האתחול ב- Windows 10 ו- Windows Server. אתה חופשי להשתמש בדרך הקלה ביותר עבורך. השתמש במאמר זה כהפניה בעתיד.

המאמר יתחלק לשני חלקים עיקריים; בדיקת זמן ההפעלה של השרת ומציאת זמן הפעלה היסטורי של Windows. החלק הראשון יתמקד במציאת כמה זמן המחשב פועל מאז האתחול האחרון שלו. זה נקרא "זמן הפעלה נוכחי" במאמר זה.

החלק השני של המאמר יתמקד במציאת "זמן הפעלה היסטורי" שמשמעו את אורך הזמן שהמערכת של Windows הייתה מופעלת בין אתחולים מרובים. באמצעות PowerShell, תלמד כיצד לפענח את יומן האירועים של Windows כדי לאחזר מספרי זמן הפעלה היסטוריים.

כיצד לבדוק את זמן האתחול ב- Windows 10 ו- Windows Server

כדי להתחיל, בואו נקפוץ כעת לכמה דרכים שונות למציאת זמן הפעלה הנוכחי של Windows.

תראו הדגמה של איך לבדוק את זמן האתחול ב- Windows 10 על ידי הרצת פקודות מקומיות על מערכת Windows בסעיף זה. אבל ידעו שעל ידי שימוש ב- PowerShell Remoting , תוכלו גם לבצע בדיקות אלה מרחוק (למעט מנהל המשימות).

מנהל המשימות

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

על מנת לבדוק את זמן הפעולה של Windows באמצעות מanager משימות, לחץ ימנית על שורת המשימות של Windows ובחר מanager משימות או לחץ על CtrlShiftEsc. לאחר שמanager משימות פתוח, לחץ על לשונית ביצועים. תחת לשונית ביצועים, תראה תווית של זמן הפעולה.

Finding Windows uptime with task manager

מציג אירועים

מציג אירועים הוא כלי נפוץ מאוד שבשימוש תדיר על ידי רוב מנהלי המערכת, ולכן זו אפשרות טובה לשליפת זמן פעולה לא מתוך שורת פקודה. אירוע ID 6005 ו-6006 יכולים לשמש לזיהוי מתי שירות יומן האירועים מתחילה או נפסקת, שקורה בזמני ההפעלה/כיבוי. עקוב אחרי השלבים הבאים כדי לזהות זמן פעולה דרך מציג אירועים:

  • פתח תפריט ההתחלה וחפש פשוט מציג אירועים, תוכל גם לגשת אליו דרך ניהול המחשב.
  • בצד שמאל, הרחב את קטע היומנים של Windows ובחר במערכת
  • עכשיו שאנו שואלים רק אירועים הקשורים למערכת, לחץ על "סנן את יומן האירועים הנוכחי…" בצד ימין של החלון שלך
  • בשדה קוד ID האירוע (באופן כברירת המחדל יהיה טקסט שמציין "כל קודי האירועים"), אנו צריכים לחפש עבור הקודים הרלוונטיים שלנו, הקלד "6005, 6006" ואז לחץ על אישור

אז תוכל להשוות בין שני הזמנים כדי ליצור סך כללי של זמן הפעולה. גם, מכיוון שהמערכת שומרת רבות מאוד מקרים של אירועים אלו, ניתן לשאול על היסטוריה של זמני הפעולה!

עכשיו יש לך יומנים שסוננים שיראו לך לא רק את הפעם האחרונה אלא גם את כל הפעמים הידועות בהן התרחש הפעלה/כיבוי.

כוח PowerShell

PowerShell מציע כמה דרכים שונות לקבלת זמן הפעלה. ניתן לשאול את WMI או להשתמש ביומן האירועים של Windows.

כאשר אתה שואל את WMI, תוכל לשאול את המחלקה Win32_OperatingSystem ולבחור במאפיין LastBootUpTime כפי שמוצג למטה.

PS51> Get-CimInstance Win32_OperatingSystem | Select-Object LastBootUpTime

LastBootUpTime      
--------------      
9/25/2019 9:37:37 PM

כדי לשאול את יומן האירועים באמצעות PowerShell, השתמש בפקודת Get-WinEvent. יהיה עליך לחפש עבור זהות אירועים 6005 או 6006 המציינים את הפעם האחרונה שבה המכונה הופעלה.

PS51> Get-WinEvent -ProviderName EventLog | Where-Object {$_.Id -eq 6005 -or $_.Id -eq 6006} | Select-Object -First 1 TimeCreated

TimeCreated         
-----------         
9/25/2019 9:37:52 PM

WMIC

WMIC מספק ממשק שורת פקודה עבור WMI והוא שיטה בדיקה ונסונה שמשתמשים בה כבר שנים רבות. לשאול באמצעות WMIC, תשאל את מחלקת WMI Win32_OperatingSystem שוב אם כי קצת מתחת לפניות. כפי שניתן לראות למטה, ניתן להשתמש בתחביר WMIC os get lastbootuptime כדי להחזיר את הפעם האחרונה בה השרת הופעל.

> wmic os get lastbootuptime

LastBootUpTime             

20190925213737.500000-240

אין צורך להוריד כלום כדי להשתמש ב-WMIC, הוא מותקן מראש עם Windows.

כלי מידע על המערכת

הפקודה systeminfo מציגה מידע מפורט על התצורה של מחשב וניתן להשתמש בה כדי לשאול את זמן הפעלת המערכת. באמצעות כלי השורת פקודה המובנה find, ניתן לפרק את הטקסט ולקבל את הנתונים שאתה צריך.

פשוט פתח את Command Prompt או PowerShell והקלד systeminfo | find.

> systeminfo | find "System Boot Time:"

System Boot Time:          9/25/2019, 9:37:37 PM

אתה לא צריך להוריד כלום כדי להועיל מ systeminfo, מכיוון שהוא מותקן מראש עם Windows.

פקודת נתוני רשת

תוכל גם לשאול במהירות את זמן הפעולה שלך דרך נתוני הרשת או הידועה יותר כ net stats.
פקודת net stats מחזירה מידע כללי על ההפעלה שלך. ניתן לראות מתחת לשורה נתונים מאז… את התאריך שבו המכונה הופעלה.

> net stats srv

Workstation Statistics for \\NATES-PC


Statistics since 9/25/2019 9:37:52 PM

--SNIP--

The command completed successfully.

פקודת Uptime

אם אתה זקוק לכלי קטן ונייד למציאת זמן הפעולה של Windows, אל תחפש רחוק – הקפיד על הפקודה Uptime מבית טכנולוגיות NeoSmart.
פקודת Uptime ל-Windows
.כלי זה אידיאלי לשאילתה מהירה של זמן הפעולה בכל גרסה של Windows. היתרון המרכזי של הכלי הזה הוא הנוחות. אם תמצא את עצמך משתמש בו מספר פעמים ביום, אולי יש לך רצון לשקול את השיטה הזו.

לאחר הורדת הכלי, פתח את uptime.exe ב- %WinDir%\System32 ופשוט הקלד uptime.

Uptime tool

כדי להפעיל כלי זה מרחוק, תצטרך תחילה להעתיק את הכלי למערכות Windows שבהן אתה בודק את זמן הפעולה.

הצגת סקריפט Get-ServerUptimeReport

כך שלא תצטרך לכתוב את PowerShell בעצמך, תוריד סקריפט קהילתי בשם Get-ServerUptimeReport.ps1.

PS51> Install-Script -Name Get-ServerUptimeReport

התסריט הזה מאפשר לך לספק שם מחשב כפרמטר. הוא ינתח את יומן האירועים של המחשב ב־System וימצא את אירועי ההתחלה והעצירה כדי להשוות ביניהם. לאחר מכן, יחזיר את סך כל זמן התפעול של השרת עד שיומן האירועים יתגלגל.

למטה דוגמה לשימוש בתסריט על שרת. הוא יחזיר את סך כל זמן העדכון לכל האירועים שיש לשרת ביומן האירועים, כולל זמן התפעול הנוכחי.

PS51> ./Get-ServerUptimeReport.ps1 -ComputerName sqlsrv1

Startup Shutdown Uptime (Days) Uptime (Min)
------- -------- ------------- ------------
9/16/2017 12:40:00 PM 9/22/2017 4:20:11 PM 6.15 8860.18
9/16/2017 10:22:49 AM 9/16/2017 12:22:36 PM 0.08 119.79
9/16/2017 3:22:12 PM 9/22/2017 4:20:11 PM 6.04 8697.98

מציאת זמן העדכון של Windows בכמה שרתים

התסריט הזה הוא דרך מהירה למצוא את זמן העדכון של שרת יחיד לאורך ימים רבים. אם תרצה לקבל מידע זה עבור הרבה שרתים בו זמנית, תוכל לאסוף רשימת שרתים ולהעביר כל שם מחשב, אחד לכל פעם, לתסריט זה.

לדוגמה, הגדר את כל השרתים במערך בקונסולת PowerShell. בדוגמה זו, המשתנה יקרא $servers.

במציאות, ייתכן ותקבל את שמות השרתים ממדירקטוריונים, Hyper-V או קובץ טקסט. כל עוד תוכל לבנות מערך של שמות שרתים, יש לך כל יתרון.

הגדר את שמות השרתים ואז חזור על כל אחד מהם באמצעות לולאה, כפי שמוצג למטה.

$servers = 'WEBSRV1','SQLSRV1'
foreach ($server in $servers) {
	Get-ServerUptimeReport.ps1 -ComputerName $server
}

Startup Shutdown Uptime (Days) Uptime (Min)
------- -------- ------------- ------------
9/16/2017 12:45:48 PM 9/22/2017 4:25:39 PM 6.15 8859.86
9/16/2017 10:42:52 AM 9/16/2017 12:42:34 PM 0.08 119.7
9/16/2017 2:42:17 PM 9/22/2017 4:25:39 PM 6.07 8743.38
9/16/2017 12:40:00 PM 9/22/2017 4:25:39 PM 6.16 8865.65
9/16/2017 10:22:49 AM 9/16/2017 12:22:36 PM 0.08 119.79
9/16/2017 3:22:12 PM 9/22/2017 4:25:39 PM 6.04 8703.46

הקוד עובד, אך אי אפשר לקבוע לאיזה שרת מתי נעשה פנייה. הוסף שם שרת לפלט כפי שמוצג למטה באמצעות מאפיין מחושב.

$servers = 'WEBSRV1','SQLSRV1'
foreach ($server in $servers) {
	Get-ServerUptimeReport.ps1 -ComputerName $server | Select-Object -Property *,@{n='ServerName';e={$server}}
}

Startup Shutdown Uptime (Days) Uptime (Min) ServerName
------- -------- ------------- ------------ ----------
9/16/2017 12:45:48 PM 9/22/2017 4:34:59 PM 6.16 8869.19 WEBSRV1
9/16/2017 10:42:52 AM 9/16/2017 12:42:34 PM 0.08 119.7 WEBSRV1
9/16/2017 2:42:17 PM 9/22/2017 4:34:59 PM 6.08 8752.71 WEBSRV1

Startup Shutdown Uptime (Days) Uptime (Min) ServerName
------- -------- ------------- ------------ ----------
9/16/2017 12:40:00 PM 9/22/2017 4:35:01 PM 6.16 8875.01 SQLSRV1
9/16/2017 10:22:49 AM 9/16/2017 12:22:36 PM 0.08 119.79 SQLSRV1
9/16/2017 3:22:12 PM 9/22/2017 4:35:01 PM 6.05 8712.81 SQLSRV1

עכשיו יש לנו כלי קטן מצוין שיכול לספק לנו דוח מהיר על זמן התפעול של השרתים שלנו לאורך זמן!

סיכום

אתה ראית כעת מספר דרכים שונות למציאת זמן הפעלה של Windows. ללא קשר לאפשרות שתבחר, תקבל את אותה המידע. בחר את האפשרות הטובה ביותר עבור ההקשר האישי שלך.

ואל תשכח, אם נדרש לך דו"ח היסטורי של זמן הפעלה, לא לשכוח את התסריט של PowerShell Get-ServerUptimeReport!

Source:
https://adamtheautomator.com/windows-uptime/