הוצאת נתוני שרתים
אם גם אתם מחפשים להוציא מידע דוגמת באיזה תאריך בוצעו עדכונים אחרונים בשרת או האם השרת ממתין לריסטרט המדריך הבא בשבילכם.
תוכן העניינים
מתחילים
יום אחד קיבלתם משימה לייצא עבור החברה שלכם מידע על כלל השרתים שלכם.
המידע הרצוי:
- רשימת עדכונים אחרונים שבוצעו בשרת לפי תאריך, מסודר מהכי חדש להכי ישן
- ניצול CPU וניצול Memory
- בדיקת שטח דיסק פנוי בכוננים שרת
- בדיקה האם השרת ממתין לריסטרט
- ייצוא ובדיקת Events Logs על מנת לוודא שאין משהו חריג
- בדיקה האם כרטיס הרשת הוא Full Duplex
הצגת רשימת עדכונים לפי סדר מהחדש לישן
מיותר לציין כי את רשימת העדכונים האחרונים ניתן לראות דרך כניסה בחלון Run אל appwiz.cpl
לחצו בצד שמאל על View installed updates
במסך שנפתח נוכל לראות בלשונית Installed On את העדכונים האחרונים שהותקנו לפי סדר עדכון אחרון:
הצגת רשימת עדכונים לפי סדר מהחדש לישן- בסקריפט Powershell
תשמחו וודאי לגלות שאת המידע הזה ניתן לקבל בקלות באמצעות פקודת PowerShell קלה:
get-wmiobject -class win32_quickfixengineering | Sort-Object -Property {$_.InstalledOn} -Descending
התוצאה:
PS C:\> get-wmiobject -class win32_quickfixengineering | Sort-Object -Property {$_.InstalledOn} -Descending Source Description HotFixID InstalledBy InstalledOn ------ ----------- -------- ----------- ----------- WIN-G9SMCJ... Update KB4049065 NT AUTHORITY\SYSTEM 2/2/2018 12:00:00 AM WIN-G9SMCJ... Security Update KB4048953 NT AUTHORITY\SYSTEM 2/2/2018 12:00:00 AM
ניתן כמובן לתחום את הסקריפט ולהציג רשימת 10 עדכונים אחרונים בלבד:
get-wmiobject -class win32_quickfixengineering | Sort-Object -Property {$_.InstalledOn} -Descending -First 10
או עוד יותר לצמצם ולהציג רק תאריך עדכון אחרון בלבד:
get-wmiobject -class win32_quickfixengineering | Sort-Object -Property {$_.InstalledOn} -Descending | Select-Object installedon -First 1
הצגת זמן אתחול האחרון בשרת
Get-CimInstance -ClassName win32_operatingsystem | select csname, lastbootuptime
התוצאה:
csname lastbootuptime ------ -------------- TS-1 2/10/2022 1:12:04 AM
הצגת פרטי עדכונים אחרונים של השרת יחד עם זמן האתחול האחרון
Get-WmiObject -class win32_quickfixengineering | Sort-Object -Property {$_.InstalledOn} -Descending | Select @{LABEL='SOURCE';EXPRESSION={$_.CSName}},Description,HotFixID,InstalledOn,@{LABEL='LastBootUpTime';EXPRESSION={(Get-CimInstance -ClassName win32_operatingsystem).LastBootUpTime}} | Format-Table
התוצאה:
PS C:\> Get-WmiObject -class win32_quickfixengineering | Sort-Object -Property {$_.InstalledOn} -Descend ing | Select @{LABEL='SOURCE';EXPRESSION={$_.CSName}},Description,HotFixID,InstalledOn,@{LABEL='LastBootUpTime';EXPRESSI ON={(Get-CimInstance -ClassName win32_operatingsystem).LastBootUpTime}} | Format-Table SOURCE Description HotFixID InstalledOn LastBootUpTime ------ ----------- -------- ----------- -------------- TS-1 Security Update KB5026363 5/10/2022 12:00:00 AM 1/10/2022 1:12:04 AM TS-2 Security Update KB5023788 3/12/2022 12:00:00 AM 3/11/2022 1:12:04 AM TS-3 Security Update KB5017396 9/12/2022 12:00:00 AM 5/1/2022 1:12:04 AM TS-3 Security Update KB5012170 8/11/2022 12:00:00 AM 7/5/2022 1:12:04 AM TS-5 Security Update KB5017095 8/10/2022 12:00:00 AM 10/3/2022 1:12:04 AM TS-6 Security Update KB5016058 1/12/2022 12:00:00 AM 5/11/2022 1:12:04 AM TS-7 Update KB4054590 7/4/2022 12:00:00 AM 4/3/2022 1:12:04 AM TS-8 Security Update KB5014026 5/11/2022 12:00:00 AM 4/12/2022 1:12:04 AM
ניצול CPU וניצול Memory
תרשו לנו לגלות לכם כלי מדהים:
RVTools
מה הכלי הזה עושה?
הוא מתחבר לשרת ESXi שלכם – באמצעות שם משתמש וסיסמה ושולף משם מידע איכותי בצורה מהירה.
איך משיגים את התוכנה?
נכנסים אל הלינק הבא ומורידים את התוכנה.
לאחר ההתקנה מבצעים התחברות באמצעות שם או כתובת ה-ESXi שלנו + שם משתמש וסיסמה:

קליק על Login ולאחר זמן טעינה קצר ייפתח החלונית הבאה:
ייצוא נתוני שרת ESXi אל קובץ CSV באמצעות RVTools
על מנת לייצא נתונים של שרת, נלחץ על הטאב הרצוי ונקליק על File ואז על Export
אם ברצוננו לייצא את כל הטאבים- נבצע קליק שמאלי על File ואז על Export all to csv

התוצאה:
בדיקת שטח דיסק פנוי בכוננים שרת
את הנתון הזה לא ניתן להוציא דרך RVTools משום שהמידע אינו מופיע שם.
ניתן להוציא כמובן באמצעות הרצת הסקריפט הבא מתוך השרת:
Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | Select-Object -Property DeviceID,@{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}}
התוצאה:
PS C:\> Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | Select-Object -Property DeviceID,@{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}} DeviceID Size FreeSpace -------- ---- --------- C: 39.68 17.23 E: 1.97 1.94 F: 1.97 1.94
בדיקה האם השרת ממתין לריסטרט
באופן כללי ניתן לבדוק את הנתון הזה דרך בדיקה ברג’יסטרי אם יש ערכים בנתיבים הבאים:
את הסקריפט שלנו ניתן להריץ דרך קונסולת PowerShell ISE :
function Test-PendingReboot { if (Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending" -EA Ignore) { return $true } if (Get-Item "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" -EA Ignore) { return $true } if (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name PendingFileRenameOperations -EA Ignore) { return $true } try { $util = [wmiclass]"\\.\root\ccm\clientsdk:CCM_ClientUtilities" $status = $util.DetermineIfRebootPending() if (($status -ne $null) -and $status.RebootPending) { return $true } } catch { } return $false } Test-PendingReboot
או דרך שמירת הקוד כקובץ ps1 (בשימוש Notepad) – ניתן לו שם של PendingReboot.ps1 לצורך העניין
והרצתו בשיטה הבאה:
- מעתיקים את קובץ הps1 אל תיקיה, נניח c:\intel
- פותחים את קונסולת PowerShell ומנווטים אל התיקיה c:\intel
- מכניסים את הקוד לכדלהלן:
PS C:\intel> ./PendingReboot.ps1 -ComputerName localhost
התוצאה תופיע למטה כ-True או False
ייצוא ובדיקת Events Logs על מנת לוודא שאין משהו חריג
ניתן לבדוק לוגים מהמערכת (בהנחה ומופעל Audit בשרת) בצורה הבאה:
מכניסים eventvwr.msc
בשורת הפקודה כאדמין
בחלונית שנפתחה מקליקים קליק ימני על אחת מהקטגוריות:
כאן נבחר באיזה פורמט (CSV) , והיכן לשמור את הקובץ:
המתינו בסבלנות עד שייווצר הקובץ ותתקבל הודעה בצד ימין כי ה-Export הושלם:

ייצוא Events Logs לקובץ CSV דרך פקודת PowerShell
בדרך כלל נבחר לייצא רשימה שתבדוק אם קיימים מספר Events ID’s חריגים (במקום לייצא את הכל):
Get-EventLog System | Where-Object {$_.EventID -eq "4740" -or $_.EventID -eq "4719" -or $_.EventID -eq "4099" -or $_.EventID -eq "4688" -or $_.EventID -eq "4670" -or $_.EventID -eq "4672"-or $_.EventID -eq "1125" -or $_.EventID -eq "1006"} | ft Machinename, TimeWritten, UserName, EventID, Message -AutoSize -Wrap
אם בכל זאת נרצה לצפות ברשימת כלל ה-Events ID נשתמש בפקודה הבאה:
(Get-WinEvent -ListProvider Microsoft-Windows-GroupPolicy).Events | Format-Table Id, Description
ייצוא רשימת Events Logs בפורמט evtx אל CSV
צפייה ברשימת הלוגים הכללית- ניתן לראות בנתיב הבא (בפורמט evtx):
ייצוא קובץ evtx לפורמט csv מתבצע באמצעות הפקודה הבאה:
Get-WinEvent -Path C:\Windows\System32\winevt\Logs\Application.evtx | Select id, message, recordid,TimeCreated | Export-Csv -Path c:\intel\applogs.csv -NoTypeInformation
בדיקה האם כרטיס הרשת הוא Full Duplex
על מנת לבדוק אם כרטיס הרשת בשרת שלנו הוא Full Duplex, ראשית נבדוק איך נקרא כרטיס הרשת שלנו, ולפיכך נשתמש בקוד הבא:
Get-NetAdapter
התוצאה:
PS> get-netadapter Name InterfaceDescription ifIndex Status MacAddress LinkSpeed ---- -------------------- ------- ------ ---------- --------- Ethernet0 Intel(R) 82574L Gigabit Network Conn... 3 Up 00-00-30-04-0D-00 1 Gbps
כדי לזהות אם אכן הכרטיס הוא על Full Duplex נשתמש בקוד Powershell הבא:
Get-NetAdapter | SELECT name, fullduplex | where name -eq Ethernet0
התוצאה:
PS> Get-NetAdapter | SELECT name, fullduplex | where name -eq Ethernet0 name fullduplex ---- ---------- Ethernet0 True
ניתן לראות כאן שאכן כרטיס הרשת הוא על Full Duplex