Quản lý Event Log bằng dòng lệnh
Quản lý Event Log:
Trước tiên, các bạn mở Command Prompt (Start > Run > gõ cmd và nhấn Enter) và tìm hiểu qua về tiện ích WEVTUTIL.EXE
C:\> wevtutil /?
Windows Events Command Line Utility.
Enables you to retrieve information about event logs and publishers, install
and uninstall event manifests, run queries, and export, archive, and clear logs.
Usage:
You can use either the short (for example, ep /uni) or long (for example,enum-publishers /unicode) version of the command and option names. Commands,
options and option values are not case-sensitive.
...
Tính năng mặc định ban đầu của câu lệnh này là truy vấn trực tiếp tới các file log trên máy tính local, nếu muốn áp dụng với máy tính remote – điều khiển từ xa thì các bạn hãy thêm tham số /r. Tuy nhiên, chúng ta chỉ có thể thực hiện được thao tác query này trên 1 máy tính duy nhất trong 1 thời điểm mà thôi. Cú pháp cơ bản của WEVTUTIL có dạng:
C:\> wevtutil qe <logname> <command parameters>
Bảng dưới đây là những tham số thường xuyên được sử dụng:
Parameter | Description | Example |
/c:<count> | Return a specified count of event log entries. If omitted, you’ll get everything. | /c:5 |
/rd:<True|False> | Reverse Direction. By default entries are returned oldest first. When set to True you’ll get newest entries first. | /rd:true |
/f:<Text|XML|RenderedXML> | The default output format is XML. Set this to Text; easier to read output. | /f:text |
/r:<computername> | Specify the name of a remote computer. | /r:server01 |
Khi thực hiện kết nối với máy tính điều khiển từ xa, hệ thống sẽ sử dụng các thông tin nhận dạng của tài khoản hiện tại, nhưng nếu muốn thay đổi thì các bạn sử dụng cú pháp như dưới đây:
/u:domain\username and /p:<password>
Khi ghép những thông tin này với nhau, giả sử rằng muốn thu thập thông tin của 5 thành phần trong System Event Log trên máy tính CHI-FP01:
C:\> wevtutil qe System /c:5 /r:chi-fp01 /u:globomantics\administrator /p:* /f:text /rd:true
Thực tế, chúng ta không nên gõ mật khẩu dưới dạng text tại đây, mà nên dùng ký tự * như hình dưới đây:
Tuy nhiên, việc tìm và hiểu được các thông tin về thành phần trong bản ghi file log cũng không hề đơn giản, bởi vì Windows Event Log yêu cầu người dùng cần có kiến thức về XML. Nếu muốn bản ghi cụ thể nào đó thì các bạn cần sử dụng tham số /q – có yêu cầu XPath. Đối với những người dùng có kinh nghiệm thì nên sử dụng mẫu cú pháp như sau:
"/q:*[<logname>[(<xmlvalue=value>)]]"
Phần giá trị XML ở đây chính là tên của node XML, chọn thành phần đó để kiểm tra:
C:\>wevtutil qe System /c:1
<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'><System><Provider Name='Microsoft-Windows-Winlogon' Guid='{DBE9B383-7CF3-4331-91CC-A3CB16A3B538}'/><EventID>7001</EventID><Version>0</Version><Level>4</Level><Task>1101</Task><Opcode>0</Opcode><Keywords>0x2000000000000000</Keywords><TimeCreated SystemTime='2010-03-31T18:35:42.122671900Z'/><EventRecordID>13218</EventRecordID><Correlation ActivityID='{67144949-5132-4859-8036-A737B43825D8}'/><Execution ProcessID='440' ThreadID='456'/><Channel>System</Channel><Computer>CLIENT1.jdhlab.local</Computer><Security UserID='S-1-5-18'/></System><EventData><Data Name='TSId'>1</Data><Data Name='UserSid'>S-1-5-21-3957442467-353870018-3926547339-500</Data></EventData></Event>Giả sử rằng chúng ta muốn thực hiện lệnh query tới EventID 7036 thì sẽ dùng lệnh như bên dưới:
C:\> wevtutil qe System /q:"*[System[(EventID=7036)]]" /c:5 /r:chi-fp01 /f:text /rd:true
Và kết quả hiển thị tại bước này:
Bên cạnh đó, một chức năng khác cũng thường xuyên được áp dụng tại đây là thu thập thông tin về các thành phần và thông tin có liên quan, chẳng hạn như Error hoặc Warning. Chúng ta có thể thực hiện được, nhưng phải dựa vào mức Level tương ứng:
Level | Description |
Level 1 | Critical |
Level 2 | Error |
Level 3 | Warning |
Level 4 | Information |
Do vậy, để lấy thông tin về 5 lỗi xảy ra gần đây nhất trong System Event Log của máy CHI-DC01 thì các bạn gõ lệnh:
C:\>wevtutil qe system "/q:*[System [(Level=2)]]" /f:text /c:5 /rd:True /r:chi-dc01 | more
Hoặc chuyển thành định dạng text bằng lệnh chuyển đổi:
C:\>wevtutil qe system "/q:*[System [(Level=2)]]" /f:text /c:5 /rd:True /r:chi-dc01 > d:\dc01-system-err.txt
Hoặc tự thực hiện lệnh phức tạp hơn:
C:\>wevtutil qe system "/q:*[System [(Level=2 or Level=3)]]" /f:text /c:5 /rd:True /r:chi-dc01 | more
Nhưng các bạn cần phải cẩn thận, vì những ký tự viết hoa và thường ở đây phải tuyệt đối chính xác.
Lệnh Query nâng cao với Event Viewer Management Console:
Đối với những câu lệnh truy vấn phức tạp thì chúng ta nên mở chức năng Event Viewer Management và dùng giao diện đồ họa để tạo query. Sau đó, nhìn vào file XML và lưu đoạn thông tin cần thiết vào Command Line. Đối với những thành phần thường xuyên sử dụng thì các bạn nên lưu lại thành file text, sau đó nhập vào query. Ví dụ như sau:
<QueryList>
<Query Id="0" Path="System">
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-EapHost' or @Name='Service Control Manager'] and (Level=1 or Level=2 or Level=3) and TimeCreated[timediff(@SystemTime) <= 604800000]]]</Select>
</Query>
</QueryList>Copy và lưu đoạn mã trên thành 1 file text, sau đó chúng ta có thể dùng lệnh query bằng Command Line:
C:\>wevtutil qe s:\scmquery.txt /sq:true /c:5 /f:text /r:chi-fp01
Thay vì tên file log thì chúng ta chỉ định rõ ràng đường dẫn tới câu lệnh truy vấn XML và thiết lập thông số /sq thành True. Nếu không có các Event trùng khớp thì hệ thống sẽ không trả về dữ liệu nào phù hợp. Trong phần tiếp theo của bài viết, chúng ta sẽ cùng nhau tham khảo nhiều hơn về cách quản lý Event Log. Chúc các bạn thành công!