ตรวจสอบ Event Log ด้วย PowerShell บน Windows Server 2025 แบบรวดเร็ว

เมื่อ Windows Server เกิดปัญหา ไม่ว่าจะเป็น Server ค้าง, Service หยุดทำงาน, Login ไม่ได้, Disk Error, Network Error หรือระบบรีสตาร์ตเอง สิ่งแรกที่ Administrator มืออาชีพจะตรวจสอบคือ Event Log

หลายคนยังคงเปิด Event Viewer แล้วไล่ดู Log ทีละรายการ แต่บน Windows Server 2025 การใช้ PowerShell สามารถค้นหา วิเคราะห์ และดึงข้อมูล Event Log ได้เร็วกว่าเดิมหลายเท่า

หากคุณดู Event Log เป็น คุณจะแก้ปัญหา Server ได้เร็วกว่าคนทั่วไปอย่างมาก


① Event Log คืออะไร

Event Log คือระบบบันทึกเหตุการณ์ต่าง ๆ ที่เกิดขึ้นบน Windows

ตัวอย่างข้อมูลที่ถูกบันทึก

  • การ Login
  • การ Logout
  • การ Restart
  • Service Error
  • Application Error
  • Hardware Error
  • Security Event
  • Active Directory Event

ข้อมูลเหล่านี้ช่วยให้ผู้ดูแลระบบวิเคราะห์สาเหตุของปัญหาได้


② ทำไมต้องใช้ PowerShell ตรวจสอบ Event Log

ข้อดีของ PowerShell

  • ค้นหา Log ได้เร็ว
  • กรองข้อมูลได้ละเอียด
  • Export รายงานได้
  • รองรับ Automation
  • ตรวจสอบหลาย Server พร้อมกันได้

เหมาะสำหรับองค์กรทุกขนาด


③ ดูรายการ Log ทั้งหมด

ใช้คำสั่ง

Get-WinEvent -ListLog *

ระบบจะแสดง Log ทั้งหมดในเครื่อง

เช่น

  • Application
  • Security
  • System
  • Setup
  • DNS Server
  • Hyper-V

และ Log อื่น ๆ อีกจำนวนมาก


④ ดู System Log ล่าสุด

ตัวอย่าง

Get-WinEvent `
-LogName System `
-MaxEvents 20

แสดง 20 เหตุการณ์ล่าสุดใน System Log


⑤ ดู Application Log

Get-WinEvent `
-LogName Application `
-MaxEvents 20

เหมาะสำหรับตรวจสอบ Application Error


⑥ ดู Security Log

Get-WinEvent `
-LogName Security `
-MaxEvents 20

ใช้ตรวจสอบ

  • Login
  • Logout
  • Authentication
  • Security Event

⑦ ดู Event ล่าสุดเพียงรายการเดียว

Get-WinEvent `
-LogName System `
-MaxEvents 1

ช่วยตรวจสอบเหตุการณ์ล่าสุดอย่างรวดเร็ว


⑧ ค้นหาเฉพาะ Error

ตัวอย่าง

Get-WinEvent `
-LogName System |
Where-Object LevelDisplayName -eq Error

ช่วยกรองเฉพาะ Error ที่สำคัญ


⑨ ค้นหาเฉพาะ Warning

Get-WinEvent `
-LogName System |
Where-Object LevelDisplayName -eq Warning

ช่วยตรวจสอบปัญหาที่อาจเกิดขึ้นในอนาคต


⑩ ดู Critical Event

Get-WinEvent `
-LogName System |
Where-Object LevelDisplayName -eq Critical

เหตุการณ์ระดับ Critical ควรได้รับการตรวจสอบทันที


⑪ ค้นหาจาก Event ID

ตัวอย่าง

Get-WinEvent `
-FilterHashtable @{
LogName='System'
ID=1074
}

ใช้ตรวจสอบ Event เฉพาะรายการ


⑫ Event ID สำคัญที่ควรรู้

Event IDความหมาย
1074Restart หรือ Shutdown
6005Event Log Started
6006Event Log Stopped
6008Shutdown ผิดปกติ
4624Login สำเร็จ
4625Login ล้มเหลว
41Kernel Power
1000Application Crash

เป็น Event ที่ Admin พบได้บ่อยมาก


⑬ ค้นหาจากช่วงเวลา

ตัวอย่าง

Get-WinEvent `
-FilterHashtable @{
LogName='System'
StartTime=(Get-Date).AddDays(-1)
}

ดู Log ย้อนหลัง 1 วัน


⑭ ดู Error ภายใน 24 ชั่วโมงล่าสุด

Get-WinEvent `
-FilterHashtable @{
LogName='System'
Level=2
StartTime=(Get-Date).AddDays(-1)
}

Level 2 คือ Error


⑮ ค้นหาจากคำสำคัญ

ตัวอย่าง

Get-WinEvent `
-LogName System |
Where-Object Message -match "DNS"

ใช้ค้นหาเหตุการณ์ที่เกี่ยวข้องกับ DNS


⑯ ดู Event ของ Service

ตัวอย่าง

Get-WinEvent `
-LogName System |
Where-Object ProviderName -like "*Service*"

เหมาะสำหรับตรวจสอบปัญหา Service


⑰ ดู Event ของ DNS Server

ตัวอย่าง

Get-WinEvent `
-LogName "DNS Server"

ใช้วิเคราะห์ปัญหา DNS โดยตรง


⑱ ดู Event ของ Hyper-V

ตัวอย่าง

Get-WinEvent `
-LogName "Microsoft-Windows-Hyper-V-VMMS/Admin"

ช่วยวิเคราะห์ปัญหา Virtual Machine


⑲ ดู Event ของ Active Directory

ตัวอย่าง

Get-WinEvent `
-LogName "Directory Service"

ใช้สำหรับ Domain Controller


⑳ Export Event Log เป็น CSV

ตัวอย่าง

Get-WinEvent `
-LogName System `
-MaxEvents 100 |
Export-Csv `
"D:\Reports\SystemLog.csv" `
-NoTypeInformation

เหมาะสำหรับ Audit และวิเคราะห์ย้อนหลัง


㉑ Export Event Log เป็น XML

ตัวอย่าง

wevtutil epl `
System `
D:\Backup\System.evtx

ใช้สำรอง Event Log ไว้ตรวจสอบภายหลัง


㉒ ตรวจสอบ Event Log จาก Remote Server

ตัวอย่าง

Get-WinEvent `
-ComputerName SERVER01 `
-LogName System `
-MaxEvents 50

ช่วยให้ตรวจสอบหลาย Server ได้จากเครื่องเดียว


㉓ ตรวจสอบ Server Restart เอง

ค้นหา Event ID

Get-WinEvent `
-FilterHashtable @{
LogName='System'
ID=6008
}

ใช้หาสาเหตุการ Shutdown ผิดปกติ


㉔ ตรวจสอบ Login ไม่สำเร็จ

ค้นหา

Get-WinEvent `
-FilterHashtable @{
LogName='Security'
ID=4625
}

ใช้วิเคราะห์ปัญหา Login หรือ Security Threat


㉕ สร้างรายงาน Error ล่าสุด

ตัวอย่าง

Get-WinEvent `
-FilterHashtable @{
LogName='System'
Level=2
StartTime=(Get-Date).AddDays(-7)
} |
Export-Csv `
"D:\Reports\WeeklyErrors.csv" `
-NoTypeInformation

เหมาะสำหรับส่งให้ทีม IT ทุกสัปดาห์


㉖ ปัญหาที่พบบ่อยเกี่ยวกับ Event Log

ปัญหายอดนิยม

  • Log เต็ม
  • Log ถูกลบ
  • Event Viewer เปิดช้า
  • Error ซ้ำจำนวนมาก
  • Security Log โตเร็ว
  • ไม่ได้เก็บ Log สำรอง

PowerShell ช่วยจัดการและค้นหาข้อมูลเหล่านี้ได้รวดเร็วกว่า GUI มาก


㉗ Best Practice สำหรับ Event Log

ควรทำดังนี้

  • ตรวจสอบ Error ทุกวัน
  • เก็บ Log สำคัญไว้สำรอง
  • ใช้ Event ID ในการค้นหา
  • ทำรายงานอัตโนมัติ
  • ตั้ง Alert สำหรับ Critical Event
  • ตรวจสอบ Security Event เป็นประจำ

การติดตาม Event Log อย่างสม่ำเสมอช่วยลด Downtime ได้อย่างมาก


㉘ GUI หรือ PowerShell ดีกว่า

หัวข้อEvent ViewerPowerShell
เริ่มต้นง่ายดีมากปานกลาง
ค้นหา Event เดียวดีดี
วิเคราะห์จำนวนมากช้าเร็วมาก
Export Reportจำกัดดีมาก
Automationต่ำสูง
Remote Analysisจำกัดดีมาก

PowerShell เหมาะกับงานวิเคราะห์ระบบระดับองค์กรอย่างชัดเจน


㉙ สรุป

Event Log คือแหล่งข้อมูลสำคัญที่สุดในการวิเคราะห์ปัญหาบน Windows Server 2025 และ PowerShell คือเครื่องมือที่ช่วยให้ผู้ดูแลระบบค้นหา กรอง วิเคราะห์ และสร้างรายงาน Event Log ได้รวดเร็วกว่าการใช้ Event Viewer แบบเดิม

ทีมงาน comsiam แนะนำให้ Administrator ฝึกใช้ PowerShell กับ Event Log อย่างจริงจัง เพราะเมื่อเกิดปัญหาในระบบ Production ความสามารถในการค้นหาสาเหตุได้อย่างรวดเร็วจะช่วยลดเวลาหยุดทำงานของระบบได้อย่างมาก และ comsiam มองว่าทักษะด้าน Log Analysis เป็นหนึ่งในคุณสมบัติสำคัญของผู้ดูแลระบบระดับมืออาชีพ

คำถามชวนคิด

หาก Server รีสตาร์ตเองตอนตี 3 และไม่มีใครอยู่ในห้อง Server คุณจะหาสาเหตุจากไหน ถ้าไม่ใช่ Event Log?