Історично для аналізу роботи агента і служби поновлення Windows використовується текстовий файл WindowsUpdate.log. Однак в Windows 10 (Windows Server 2016/2019) замість звичного текстового файлу логи Windows Update ведуться в форматі Event Tracing for Windows (ETW). За рахунок цього збільшується швидкодія підсистеми записи логів і економиться місце на диску.
Таким чином, події Windows Update тепер більше не записуються в реальному часі в файл % Windir% \ WindowsUpdate.log. І хоча сам файл все ще присутній в корені папки Windows, в ньому лише зазначено, що для збору логів тепер застосовується формат ETW.
Windows Update logs are now generated using ETW (Event Tracing for Windows). % MINIFYHTML94c94c461bdbf801ea1528dc9c5b1f4e5% Please run the Get-WindowsUpdateLog PowerShell command to convert ETW traces into a readable WindowsUpdate.log. For more information, please visit http://go.microsoft.com/fwlink/?LinkId=518345
Головна незручність для адміністраторів - тепер ви не можете швидко проаналізувати текстовий файл WindowsUpdate.log, знайти помилки в службі агента оновлень Windows (див. Повний список помилок Windows Update), перевірити настройки WSUS і проаналізувати історію установки оновлень.
Ви можете конвертувати події ETW в звичний текстовий формат WindowsUpdate.log для більш зручного аналізу подій служби оновлень. Для цього використовується командлет PowerShell - Get-WindowsUpdateLog. Даний командлет дозволяє зібрати інформацію з усіх .etl файлів (зберігаються в каталозі C: \ WINDOWS \ Logs \ WindowsUpdate) і сформувати один файл WindowsUpdate.log.
Щоб сформувати файл WindowsUpdate.log і помістити його в каталог C: \ PS \ Logs, виконайте наступну команду в консолі PowerShell:
Get-WindowsUpdateLog -logpath C: \ PS \ Logs \ WindowsUpdate.log
Get-WindowsUpdateLog
може з'явитися помилка відсутнього файлу SymSrv.dll:Copy-Item: Can not 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
Файл "C: \ Program Files \ Windows Defender \ SymSrv.dll" зазвичай відсутня, якщо на сервері не встановлено антивірус Windows Defender.
Щоб виправити помилку, ви можете встановити Defender, скопіювати файл SymSrv.dll з іншого Windows Server 2016 / Windows 10 або пошуком знайти його в каталозі "C: \ Windows \ WinSxS \" (у мене каталог називався C: \ Windows \ WinSxS \ amd64_windows -defender-service-cloudclean_ ...) і скопіювати його в папку C: \ Program Files \ Windows Defender.
У старих версіях Windows 10 при першому запуску командлет Get-WindowsUpdateLog завантажить і встановить сервер символів Microsoft (Microsoft Internet Symbol Store). В останніх версіях Windows 10 виконується онлайн доступ до сервера символів Microsoft в Azure. Потім командлет:
- Збирає дані з усіх .etl файлів;
- Перетворює дані в CSV (за замовчуванням) або XML формат;
- Переконвертує дані з проміжних файлів і додає їх в текстовий файл журналу, наданого в секції LogPath (якщо параметр LogPath не заданий, файл WindowsUpdate.log створюється на робочому столі користувача, що запустив команду).
Unknown (10): GUID = 5e0ee4cc-3618-f43a-06ca-9d3b0dabc11a (No Format Information found).
Це означає, що у вас не встановлений сервер символів Windows Symbol (зараз можна скачати окрему програму установки Windows symbols, тому що вони автоматично завантажуються зі сховища символів в Azure). Для ізольованих середовищ ви можете використовувати офлайн версію сервера символів згідно зі статтею Offline Symbols for Windows Update.
Відкрийте файл журналу за допомогою такої команди PowerShell:
Invoke-Item -Path C: \ PS \ Logs \ WindowsUpdate.log
Аналізувати файл, WindowsUpdate.log досить складно, тому що в ньому збираються дані з багатьох джерел:
- AGENT- події агента Windows Update;
- AU - автоматичне оновлення;
- AUCLNT- взаємодія з користувачем;
- HANDLER- управління монтажником оновлень;
- MISC- загальна інформація;
- PT- синхронізація оновлень з локальним сховищем;
- REPORT- збір звітів;
- SERVICE- запуск / вимикання служби wuauserv;
- SETUP- установка нових версій клієнта Windows Update;
- DownloadManager - завантаження оновлень в локальних кеш;
- Handler, Setup - заголовки установників (CBS і т.п.);
- І т.д.
Ви можете вибрати останні 30 подій від агента оновлення Windows (agent) за допомогою простого регулярного виразу:
Select-String -Pattern '\ sagent \ s' -Path C: \ PS \ Logs \ WindowsUpdate.log | Select-Object -Last 30
Можна відфільтрувати події в балці за кількома джерелами:
Select-String -Pattern '\ sagent \ s | \ smisc \ s' -Path c: \ PS \ Logs \ WindowsUpdate.log | Select-Object -Last 50
Аналогічно ви можете шукати події за номером KB, помилка (рядки FAILED, Exit Code, FATAL).
Також ви можете сформувати файл WindowsUpdate.log для віддаленого комп'ютера / сервера:
Get-WindowsUpdateLog -ETLPath \\ PC221 \ C $ \ windows \ Logs \ WindowsUpdate -LogPath C: \ PS \ Logs \ windowsupdatePC221.log
Також для аналізу роботи служби оновлень Windows може бути корисні журнали Event Viewer в розділі Applications and Services Logs -> Microsoft -> Windows -> WindowsUpdateClient -> Operational.
Для управління оновленнями з PowerShell ви можете використовувати модуль PSWindowsUpdate.