Uncategorized

הוצאת נתוני שרתים

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

מתחילים

יום אחד קיבלתם משימה לייצא עבור החברה שלכם מידע על כלל השרתים שלכם.

המידע הרצוי:

  • רשימת עדכונים אחרונים שבוצעו בשרת לפי תאריך, מסודר מהכי חדש להכי ישן
  • ניצול 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

ניצול 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

בדיקה האם השרת ממתין לריסטרט

באופן כללי ניתן לבדוק את הנתון הזה דרך בדיקה ברג’יסטרי אם יש ערכים בנתיבים הבאים:

HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager

את הסקריפט שלנו ניתן להריץ דרך קונסולת 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 הושלם:

שימו לב: בכמות לוגים של מעל ל-50,000 ייתכנו זמני ייצוא גבוהים.

ייצוא 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
שימו לב: הייצוא בסקריפט זה מתייחס לקטגוריה System.

אם בכל זאת נרצה לצפות ברשימת כלל ה-Events ID נשתמש בפקודה הבאה:

(Get-WinEvent -ListProvider Microsoft-Windows-GroupPolicy).Events | Format-Table Id, Description

ייצוא רשימת Events Logs בפורמט evtx אל CSV

צפייה ברשימת הלוגים הכללית- ניתן לראות בנתיב הבא (בפורמט evtx):

C:\Windows\System32\winevt\Logs

ייצוא קובץ 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
שימו לב: הייצוא בסקריפט זה מתייחס לקטגוריה Application.

בדיקה האם כרטיס הרשת הוא 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

Rami

יזם, איש סיסטם, מתכנת בחסד, ונושם אינטרנט.

Leave a Reply

Your email address will not be published.

אתה תאהב גם את זה
Close
Back to top button