Заметки о Windows и других программных продуктах Microsoft...

Поиск установленных обновлений из командной строки

Поиск установленных обновлений из командной строки

Иногда требуется проверить установленные в системе обновления. Конечно, можно просмотреть журнал обновлений, однако выискивать нужное обновление в длинном списке достаточно сложно и долго. Поэтому гораздо проще воспользоваться командной строкой, которая предоставляет для этого несколько способов.

WMIC

Быстрее и проще всего отыскать нужный апдейт с помощью утилиты командной строки wmic.exe. Так следующая команда выведет полный список установленных обновлений:

wmic qfe list

А так мы найдем найдем нужное:

wmic qfe list | find ″KB982018″

wmic

Get-WmiObject

PowerShell также  позволяет просмотреть установленные обновления. Сделать это можно с помощью командлета Get-WmiObject, например:

Get-WmiObject -Class win32_quickfixengineering -Filter ″HotFixID=′KB982018′″ | fl HotFixID, InstalledOn, Description, Caption

Get-WmiObject

 

Как видите, команда несколько сложнее и требуется дополнительно отформатировать вывод, однако результат такой же, как и у утилиты wmic. Что неудивительно, так как в обоих случаях данные получаются путем обращения к WMI классу win32_quickfixengineering. Обратите внимание, что он содержит данные только об обновлениях операционной системы и ее компонентов. Получить информацию об обновлениях для других продуктов MS (Office, Exchange и т.п) таким образом не получится.

Get-SilWindowsUpdate

В Windows Server 2012 R2 имеется модуль SoftwareInventoryLogging, предназначенный для инвентаризации установленного ПО. В состав этого модуля входит командлет Get-SilWindowsUpdate, с помощью которого также можно посмотреть установленные обновления. Например:

Get-SilWindowsUpdate -ID kb3149090

Get-SolWindowsUpdate

 

Этот командлет также использует WMI запрос к классу MsftSil_WindowsUpdate. Get-SilWindowsUpdate очень прост и удобен в использовании, но к сожалению доступен он далеко не везде. Модуль SoftwareInventoryLogging присутствует только в серверных ОС начиная с Windows Server 2012 R2 с установленным обновлением KB3000850.

Microsoft Update Client Install History

Еще один вариант поиска обновлений — просмотр истории клиента обновления. Например:

$session = New-Object -ComObject ″Microsoft.Update.Session″
$searcher = $session.CreateUpdateSearcher()
$hystorycount = $searcher.GetTotalHistoryCount()
$searcher.QueryHistory(0,$HistoryCount) | where {$_.Title -match ″kb2506143″} | fl Date,Title,Description,SupportUrl

Microsoft Update Client Install History

 

Способ (в отличие от предыдущих) достаточно громоздкий, однако позволяет найти информацию об всех обновлениях обновления (как самой ОС, так и доп. приложений). Таким образом можно найти обновления, которые были установлены с помощью системы автоматического обновления. Если обновления были загружены и установлены вручную (или с помощью каких либо пользовательских сценариев), то таким образом найти их не удастся.

 
 
Комментарии

Немного дополню статью. Странно, но вы не упомянули о powershell-командлете Get-HotFix. Он заменяет конструкцию Get-WmiObject -Class win32_quickfixengineering

Get-HotFix -id 'KB957095' -ComputerName $env:COMPUTERNAME

Не знал про этот командлет. Спасибо за дополнение.

команда «wmic qfe list» отображает только обновления Windows.
Но в «панели управления-программы-программы и компоненты-Установленные обновления» отображаются и другие обновления, например MS Office.
Как вывести с помощью cmd список обновлений MS Office?

В «панели управления-все элементы управления-Центр обновления Windows-Просмотр журнала обновлений» есть список всех установленных и не установленных обновлений.
Как через cmd вывести этот список?

Leave a Reply to Kirill