ตรวจสอบไฟล์บันทึกของ Windows แบบเรียลไทม์ด้วย PowerShell

/th/images/colourful-logs-from-powershell-output-highlight-e.png

แอพหรือบริการบางอย่างใน Windows ไม่ใช้บันทึกไบนารี Event Viewer ( *.evtx ) เพื่อจัดเก็บบันทึก แต่ให้บันทึกเป็นไฟล์บันทึกข้อความธรรมดาแทน เมื่อแก้ไขปัญหาบางอย่าง จะเป็นประโยชน์ในการดูเนื้อหาของไฟล์บันทึกบนหน้าจอแบบเรียลไทม์พร้อมการอัปเดตอัตโนมัติเมื่อมีการเพิ่มบรรทัดใหม่ต่อท้ายบันทึก ใน Linux โดยทั่วไปคำสั่ง tail จะใช้เพื่อแสดงเนื้อหาของไฟล์บันทึกบนหน้าจอและอัปเดตแบบเรียลไทม์ สำหรับการตรวจสอบบันทึกแบบเรียลไทม์ (แบบเรียลไทม์) ใน Windows คุณสามารถใช้ PowerShell cmdlet Get-Content เป็นอะนาล็อกของคำสั่ง tail ได้

คำสั่งต่อไปนี้จะส่งออกเนื้อหาไฟล์บันทึกไปยังคอนโซล โดยแสดงบรรทัดใหม่แบบเรียลไทม์เมื่อต่อท้ายบันทึก:

รับเส้นทางเนื้อหา "C:\LogFolder\appact.log"-รอ

/th/images/list-log-file-and-show-new-entries-added-using-get.png.webp

ข้อเสียเปรียบของคำสั่งก่อนหน้านี้คือ จะแสดงไฟล์บันทึกทั้งหมดก่อน ก่อนที่จะแสดงบรรทัดใหม่เมื่อมีการต่อท้าย จะสะดวกกว่าหากแสดงเฉพาะรายการบันทึกล่าสุดหลายรายการบนหน้าจอ ตัวอย่างเช่น หากต้องการแสดงเฉพาะ 10 บรรทัดสุดท้ายของไฟล์บันทึกและรอให้บรรทัดใหม่ปรากฏขึ้น ให้เพิ่มอาร์กิวเมนต์-Tail 10

รับเส้นทางเนื้อหา "C:\LogFolder\appact.log"-รอ-Tail 10

PowerShell ช่วยให้สามารถกรองไฟล์บันทึกแบบเรียลไทม์เพื่อแสดงเฉพาะบรรทัดที่ตรงกับเกณฑ์เฉพาะ ตัวอย่างเช่น ฉันต้องการแสดงเฉพาะรายการบันทึกไฟร์วอลล์ที่มีที่อยู่ IP เฉพาะ:

$IP="123.12.2.22"รับเนื้อหา "C:\windows\system32\LogFiles\Firewall\pfirewall.log"-Tail 40-Wait | ? { $\_-ตรงกับ $IP }

/th/images/filtering-and-displaying-specific-lines-from-a-log.png.webp

PowerShell ยังสามารถใช้เพื่อปรับสีเอาต์พุตของเนื้อหาไฟล์บันทึกเพื่อให้อ่านง่ายขึ้น ตัวอย่างเช่น ฉันต้องการให้บรรทัดที่มีคำหลัก Success ถูกเน้นด้วยสีเขียว และบรรทัดที่มีข้อผิดพลาดถูกเน้นด้วยสีแดง

` รับเนื้อหา C:\Windows\System32\LogFiles\setupcln\setupact.log-รอ-Tail 50 | สำหรับแต่ละวัตถุ {

สวิตช์-Regex ($_ ) {

“ข้อผิดพลาด”{ เขียน-โฮสต์ $_-F สีขาว-B สีแดง }

“ความสำเร็จ”{ เขียน-โฮสต์ $_-F สีเขียว }

ค่าเริ่มต้น { เขียน-โฮสต์ $_ }

}

} `

ขณะนี้ไฟล์บันทึกที่ส่งออกบนหน้าจอสามารถอ่านได้ง่ายขึ้นมาก

/th/images/colourful-logs-from-powershell-output-highlight-e.png.webp

ดังนั้น PowerShell จึงมอบเครื่องมือที่ง่ายและสะดวกสำหรับการตรวจสอบการเปลี่ยนแปลงไฟล์บันทึกแบบเรียลไทม์ แน่นอนว่า PowerShell ไม่สามารถจัดการไฟล์บันทึกขนาดใหญ่มาก (หลาย GB) ได้ดีเป็นพิเศษ อย่างไรก็ตาม ด้วยพารามิเตอร์ -Tail จะอ่านเฉพาะส่วนท้ายของไฟล์ แทนที่จะอ่านบันทึกทั้งหมด ดังนั้นวิธีการตรวจสอบไฟล์บันทึกแบบเรียลไทม์จึงไม่ส่งผลให้มีการใช้งานหน่วยความจำสูง

*️⃣ ลิงค์ที่มา:

บันทึกไฟร์วอลล์,