# Windows Event Log Analysis with PowerShell

Windows Event Logs là một tính năng của hệ điều hành Microsoft Windows, ghi lại thông tin về các sự kiện của các thành phần hệ điều hành và ứng dụng. Các sự kiện này bao gồm việc khởi động hoặc dừng các dịch vụ, lỗi ứng dụng, cảnh báo bảo mật, và nhiều sự kiện khác.

Windows Event Logs được chia thành ba danh mục chính:

* **Application logs (Nhật ký ứng dụng):** Theo dõi lỗi, cảnh báo, và các sự kiện khác của các ứng dụng Windows. Ứng dụng có thể ghi thông tin vào nhật ký này về các tình huống cần thông báo cho người dùng hoặc quản trị viên hệ thống.
* **System logs (Nhật ký hệ thống):** Theo dõi các sự kiện của các thành phần hệ điều hành. Nhật ký này có thể bao gồm lỗi phần cứng, cài đặt driver, lỗi hệ thống, hỏng hóc phần cứng, và các sự kiện liên quan đến hệ thống khác.
* **Security logs (Nhật ký bảo mật):** Ghi lại các sự kiện liên quan đến bảo mật, như các lần đăng nhập và đăng xuất, truy cập tệp và đối tượng, quản lý người dùng và nhóm, thay đổi chính sách bảo mật, và các sự kiện bảo mật khác.

Công cụ **Event Viewer** được sử dụng để xem và phân tích các nhật ký sự kiện (logs) như hình ảnh công cụ bên dưới:

<figure><img src="/files/ULKs23L2CmDuZBYpNUWu" alt=""><figcaption></figcaption></figure>

Để tìm kiếm nhật ký sự kiện Windows trong PowerShell, bạn có thể sử dụng **Get-EventLog** hoặc cmdlet mới và toàn diện hơn là **Get-WinEvent**.

Ví dụ, chúng ta có thể lấy danh sách các nguồn nhật ký có sẵn bằng cách chạy lệnh sau:

{% code overflow="wrap" %}

```powershell
Get-WinEvent -ListLog * | Select-Object LogName, RecordCount, IsClassicLog, IsEnabled, logMode, logType | Format-Table -AutoSize
```

{% endcode %}

Khi chạy lệnh này, bạn sẽ thấy đầu ra tương tự như sau.

<figure><img src="/files/VhSVKVCf5DVrV1GoBAXB" alt=""><figcaption></figcaption></figure>

Trong đầu ra này, cột **RecordCount** cho biết số lượng nhật ký trong mục đó tại thời điểm chúng ta truy xuất danh sách.

Cột **IsClassicLog** cho biết nhật ký có được lưu giữ theo kiểu cổ điển hay không. Với kiểu cổ điển, các nhật ký trong Windows được lưu dưới dạng tệp `.mc`, trong khi ở kiểu mới, chúng được thay thế bằng tệp `.xml`.

Cột **IsEnabled** cung cấp thông tin về việc hệ thống có được cấu hình để thu thập nhật ký cho tài nguyên này hay không. Nếu giá trị trong cột là `False`, điều này có nghĩa là các nhật ký không được thu thập.

Cột **LogMode** xác định hành vi của hệ thống khi dung lượng ổ đĩa cho phép ghi nhật ký bị vượt quá. Nó có ba giá trị:

* **Circular:** Xóa và ghi đè bản ghi cũ nhất.
* **Retain:** Dừng ghi nhật ký cho đến khi có thêm dung lượng.
* **AutoBackup:** Tự động tạo và tiếp tục lưu trữ.

Cột **LogType** xác định loại nhật ký của trường liên quan, bao gồm **Administrative**, **Analytical**, **Debug**, và **Operational**.

Bây giờ, hãy xem cách chúng ta có thể liệt kê các nhật ký trong một mục cụ thể. Với lệnh sau, chúng ta liệt kê 100 bản ghi sự kiện gần đây nhất trong danh mục **Application** cùng với các cột **TimeCreated**, **ID**, **ProviderName**, **LevelDisplayName**, và **Message**:

{% code overflow="wrap" %}

```powershell
Get-WinEvent -LogName 'Application' -MaxEvents 100 | Select-Object TimeCreated, ID, ProviderName, LevelDisplayName, Message | Format-Table -AutoSize
```

{% endcode %}

Đầu ra của chúng ta là:

<figure><img src="/files/eqdGo6uTZq7g66FUuhW4" alt=""><figcaption></figcaption></figure>

Mặc dù **Get-WinEvent** cmdlet và EventLogs không phải là chủ đề của khóa học này, chúng ta sẽ dừng lại tại đây và tiếp tục khám phá những gì có thể làm với các script PowerShell.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://viettaliii.gitbook.io/home/education/window-pe-.net/powershell/powershell-for-analysis/windows-event-log-analysis-with-powershell.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
