Trước đây, WindowsUpdate.log tệp văn bản thuần túy đã được sử dụng để phân tích hoạt động của tác nhân và dịch vụ Windows Update. Tuy nhiên, nhật ký Windows Update trong Windows 10 (Windows Server 2016/2019) được lưu trong Theo dõi sự kiện dành cho Windows định dạng tệp ( ETW ), thay vì tệp văn bản thông thường. Với hành động như vậy, các nhà phát triển Windows đã lên kế hoạch tăng hiệu suất của hệ thống con ghi nhật ký và giảm dung lượng bị chiếm dụng bởi các tệp văn bản trên đĩa.
Do đó, các sự kiện Windows Update không còn được ghi trong thời gian thực vào % windir% \ WindowsUpdate.log tập tin. Mặc dù tệp vẫn tồn tại trong thư mục gốc của thư mục Windows, nó chỉ cho biết rằng định dạng ETW hiện được sử dụng để thu thập nhật ký WU.
Nhật ký Windows Update hiện được tạo bằng ETW (Theo dõi sự kiện dành cho Windows).Vui lòng chạy lệnh Get-WindowsUpdateLog PowerShell để chuyển đổi dấu vết ETW thành WindowsUpdate.log có thể đọc được.
Để biết thêm thông tin, vui lòng truy cập https://go.microsoft.com/fwlink/?LinkId=518345
Nhược điểm của phương pháp ghi nhật ký mới đối với quản trị viên - bây giờ bạn không thể nhanh chóng phân tích dịch vụ Windows Update Agent, tìm mã lỗi trong tệp văn bản WindowsUpdate.log (xem Danh sách hoàn chỉnh mã lỗi Windows Update), kiểm tra cài đặt tác nhân WSUS và phân tích lịch sử cài đặt bản cập nhật.
Bạn có thể chuyển đổi các sự kiện ETW sang tệp WindowsUpdate.log văn bản thuần túy để phân tích thuận tiện hơn các sự kiện dịch vụ cập nhật. Để thực hiện việc này, hãy sử dụng lệnh ghép ngắn PowerShell - Get-WindowsUpdateLog . Lệnh ghép ngắn này cho phép bạn thu thập thông tin từ tất cả .etl các tệp (chúng được lưu trữ trong C:\ WINDOWS \ Logs \ WindowsUpdate ) và tạo một tệp văn bản WindowsUpdate.log.
Để tạo tệp WindowsUpdate.log và lưu nó trong C:\ PS \ Logs, hãy chạy lệnh sau trong bảng điều khiển PowerShell:
Get-WindowsUpdateLog -logpath C:\PS\Logs\WindowsUpdate.log
Trong Windows Server 2016, khi bạn chạy lệnh ghép ngắn Get-WindowsUpdateLog, bạn có thể nhận được lỗi “SymSrv.dll is missing”:
Copy-Item : Cannot find path 'C:\Program Files\Windows Defender\SymSrv.dll' because it does not exist. At C:\Windows\system32\WindowsPowerShell\v1.0\Modules\WindowsUpdate\WindowsUpdateLog.psm1:56 char:5
Tệp “C:\ Program Files \ Windows Defender \ SymSrv.dll” thường bị thiếu nếu Windows Defender không được cài đặt trên máy chủ.
Để khắc phục lỗi, bạn có thể cài đặt Windows Defender, sao chép tệp SymSrv.dll từ Windows Server 2016 / Windows 10 khác hoặc tìm kiếm tệp SymSrv.dll trong thư mục WinSxS cục bộ (trong trường hợp của tôi, thư mục được gọi là C:\ Windows \ WinSxS \ amd64_windows-Defender-service-cloudclean_… ) và sao chép nó vào thư mục “C:\ Program Files \ Windows Defender”.
Trong các bản dựng Windows 10 cũ hơn, lần đầu tiên bạn chạy lệnh ghép ngắn Get-WindowsUpdateLog, nó sẽ tải xuống và cài đặt Microsoft Internet Symbol Store. Các phiên bản mới nhất của Windows 10 truy cập trực tuyến Máy chủ ký tự của Microsoft trong Azure. Sau đó, lệnh ghép ngắn:
- Đọc dữ liệu từ tất cả các tệp .etl;
- Dữ liệu được chuyển đổi thành định dạng CSV (theo mặc định) hoặc XML;
- Dữ liệu từ tệp ở định dạng trung gian sẽ được chuyển đổi và thêm vào tệp văn bản nhật ký được chỉ định trong tham số LogPath (nếu tham số trong LogPath không được chỉ định, WindowsUpdate.log sẽ được tạo trên màn hình của người dùng đang chạy lệnh)
Mở tệp nhật ký bằng lệnh PowerShell này:
Invoke-Item -Path C:\PS\Logs\WindowsUpdate.log
Trong một số trường hợp, trong tệp WindowsUpdate.log, bạn có thể thấy các chuỗi như vậy:
Unknown(140): GUID=53212e4cc-4321-f43a-2123-9ada0090bc12b (No Format Information found).
Điều này có nghĩa là bạn chưa cài đặt máy chủ Ký hiệu Windows (hôm nay bạn không thể tải xuống trình cài đặt ký hiệu Windows riêng biệt vì nó được tự động tải xuống từ kho biểu tượng trong Azure). Đối với các môi trường bị cô lập, bạn có thể sử dụng phiên bản ngoại tuyến của máy chủ biểu tượng theo bài viết Biểu tượng ngoại tuyến cho Windows Update.
Mẹo. Xin lưu ý rằng tệp WindowsUpdate.log đã tạo là tệp tĩnh và không được cập nhật theo thời gian thực như trong các phiên bản Windows trước. Để cập nhật tệp, bạn cần chạy lại lệnh ghép ngắn Get-WindowsUpdateLog hoặc tạo một tập lệnh tự động cập nhật tệp ở một số tần suất (tệp bị ghi đè).Khá khó để phân tích tệp WindowsUpdate.log thu được vì nó thu thập dữ liệu từ nhiều nguồn sự kiện:
- ĐẠI LÝ - Các sự kiện tác nhân Windows Update;
- AU - cập nhật tự động;
- AUCLNT - tương tác của người dùng;
- HANDLER - quản lý trình cài đặt cập nhật;
- MISC - thông tin WU phổ biến;
- PT - đồng bộ hóa các bản cập nhật với kho dữ liệu cục bộ;
- BÁO CÁO - thu thập báo cáo;
- DỊCH VỤ - các sự kiện bắt đầu / dừng dịch vụ wuauserv;
- CÀI ĐẶT - cài đặt các phiên bản mới của máy khách Windows Update;
- DownloadManager - tải các bản cập nhật xuống bộ nhớ đệm cục bộ bằng BITS;
- Trình xử lý, Thiết lập - tiêu đề trình cài đặt (CBS, v.v.);
- và nhiều người khác.
Bạn có thể chọn 30 sự kiện cuối cùng từ Windows Update Agent (tác nhân) bằng một biểu thức chính quy đơn giản:
Select-String -Pattern '\sagent\s' -Path C:\PS\Logs\WindowsUpdate.log | Select-Object -Last 30
Bạn có thể lọc các sự kiện trong WindowsUpdate.log theo một số nguồn:
Select-String -Pattern '\sagent\s|\smisc\s' -Path c:\PS\Logs\WindowsUpdate.log | Select-Object -Last 50
Tương tự, bạn có thể phân tích cú pháp tệp văn bản cho các sự kiện theo số KB, lỗi (FAILED, Exit Code, FATAL).
Bạn cũng có thể tạo tệp WindowsUpdate.log cho máy tính hoặc máy chủ từ xa:
Get-WindowsUpdateLog -ETLPath \\ny-srf-1\C$\windows\Logs\WindowsUpdate -LogPath C:\PS\Logs\windowsupdate-ny-srf-1.log
Bạn cũng có thể sử dụng nhật ký của Trình xem sự kiện để phân tích hoạt động của dịch vụ Windows Update. Mở rộng phần Chế độ xem sự kiện sau: Nhật ký ứng dụng và dịch vụ -> Microsoft -> Windows -> WindowsUpdateClient -> Operational .
Bạn có thể sử dụng mô-đun PSWindowsUpdate để quản lý các bản cập nhật từ PowerShell cli.