Я разбираю history.log
с хостов debian для создания csv с датами / пакетами / версиями. После запуска набора тестов в тестовой среде я затем обновляю эти пакеты на реальных хостах.
Я хочу сделать то же самое для Windows Server.
Я создал файл .log, используя Get-WindowsUpdateLog
PowerShell, но, видимо, я не могу получить оттуда никакой полезной информации, кроме отметок времени. Насколько я понял, чтобы иметь возможность видеть в журнале строки, которые фактически соответствуют сеансам установки (пакеты X, Y и Z, установленные в этот день), мне нужно включить подробные журналы обновления Windows, но как мне это сделать? Мне также нужно знать фактическое название обновления, а не идентификатор. AFAIK, я могу вручную скопировать идентификаторы обновлений в Каталог Центра обновления Майкрософт, но я бы хотел этого избежать. Может ли включение подробного ведения журнала решить эту проблему? Или это было бы слишком просто?
Используйте хороший PSWindowsUpdate
Модуль Powershell из галереи PowerShell: ссылка на сайт
Вот и команда Get-WUHistory
который действительно хочет, что вы ищете.
Согласно быстрому поиску «Журналы обновлений Windows» (я не встречал этого до этого запроса), похоже, что клиент Центра обновления Windows теперь использует трассировку событий для Windows (ETW) для создания журналов диагностики. Однако они сохраняются в двоичном формате файла ETL.
Однако сколько лет вашей ОС Windows?
Вы можете просматривать файлы ETL или использовать сборщик журналов, такой как NXLog (я участвую в этом проекте), для сбора данных ETW и записи их в виде сообщений JSON. Обычно вам нужно узнать, какое имя у поставщика ETW, чтобы начать их регистрацию. Например, Microsoft-Windows-WindowsUpdateClient - это имя поставщика ETW для Windows Server 2016.