Графический журнал истории обновлений в Windows в панели управления содержит базовую информацию об установленных обновлений (URI команда быстрого доступа
ms-settings:windowsupdate-history
) и не удобен для поиска. В этой статье рассмотрим, как вывести список установленных обновлений в Windows из командной строки, узнать, когда последний раз ставились обновления на компьютере, и как проверить, установлено ли определенное обновление на локальном или удаленном компьютере.
Ранее для вывода списка обновлений в Windows чаще использовалась утилита командной строки wmic. Чтобы получить удобную табличку со списком установленных обновлений, запустите
cmd.exe
и выполните команду:
wmic qfe list brief /format:table
В таблице будут показаны номера обновлений (HotFixID), даты установки (InstalledOn), а также имя пользователя, который установил обновление (InstalledBy).
NT AUTHORITY\SYSTEM
указывает на то, что обновление было установлено автоматически службой Windows Update. Если обновление Windows было установлено вручную, здесь будет указано имя пользователя.Однако Microsoft анонсировала, что поддержка использование инструментов для обращения к WMI (включая утилиту wmic) будет отключена по умолчанию в новых версиях Windows (начиная с Windows 11 24H2), поэтому для получения информации об обновления лучше использовать PowerShell.
Аналогичная PowerShell команда для вывода таблицы со список установленных обновлений (с сортировкой по дате установки):
Get-HotFix | Select-Object HotFixID, InstalledOn, InstalledBy, Description| sort InstalledOn -Desc
Этот командлет получает информацию из класса Win32_QuickFixEngineering, поэтому такой же список можно вывести так:
Get-CimInstance -ClassName Win32_QuickFixEngineering| select HotFixID, InstalledOn | sort InstalledOn -Descending
Выгрузить список установленных обновлений в текстовый файл:
Get-HotFix |Format-Table -AutoSize > c:\temp\updatelist.txt
Проверить, установлено ли конкретное обновление по (KBID):
Get-HotFix -id 'KB5049621'
Вывести список обновлений на удаленном компьютере:
Get-HotFix -ComputerName wks333
Проверить, установлено ли определенное обновление на нескольких компьютерах (список компьютеров в AD можно сформировать с помощью командлета Get-ADComputer).
$computers = @('Computer1', 'Computer2', 'Computer3')
$updateId = 'KB5049622'
foreach ($computer in $computers) {
$hotfix = Get-HotFix -ComputerName $computer -Id $updateId -ErrorAction SilentlyContinue
if ($hotfix) {
Write-Host "Update $updateId is installed on $computer."
} else {
Write-Host "Update $updateId is NOT installed on $computer."
}
}
Вывести дату последней успешной установки обновлений в Windows:
Get-HotFix| sort InstalledOn -Desc|select InstalledOn -First 1
Есть отдельный PowerShell модуль PSWindowsUpdate для управления обновлениями. В его состав входя командлеты
Get-WUHistory
(вывести полную историю установки обновления, включая ошибк) и
Get-WULastResults
(дату последнего успешного обновления и сканирования на сервере обновлений).
А как посмотреть какие обновления предлагается загрузить? Центр обновлений говорит что обновления готовы к установке.
Посмотрете в панели управления Control Panel\System and Security\Windows Update
Должна быть ссылка вида «xx важныйх обовлений доступно». Нажмите на нее
Перечитал весь блог. Спасибо. Много нового нашёл для себя.
Небольшое дополнение:
неудобно искать список в сис32, посему нашел иной вариант:
wmic qfe get >>c:\update_status.txt
Спасибо за отзыв! Мы стараемся!
Все верно, по -умоланию команда складывает текстовый файл в %windir%\system32, можно сменить путь.
Нет, не верно.
По умолчанию, команда(почти любая) складывает файлы из места выполнения команды.
CMD запускается в директории %windir%\system32 и команду мы выполняем находясь в %windir%\system32
и файл положится в %windir%\system32
Но если мы перейдем в другую папку, то файл будет ложится туда.
Это правило работает для стандартных программ, которые прописаны в PATH переменной.