Почему в get-hotfix и wmic qfe list в Powershell отсутствуют установленные обновления?

Я пытаюсь написать скрипт, чтобы убедиться, что определенное исправление установлено. На одном из наших тестовых компьютеров под управлением Windows 8.1 get-hotfix возвращает неполный список исправлений:

Тем не менее, в панели управления "Программы и компоненты" отображается множество исправлений:

Все остальные наши тестовые машины, включая другие, установленные с Windows 8.0 и 8.1, работают нормально. Есть идеи, почему это так? Как я могу получить полный список исправлений от Powershell?

Редактировать: wmic qfe list показывает только те же четыре исправления, что и get-hotfix также.

3 ответа

Я верю Get-Hotfix командлет использует Win32_QuickFixEngineering Класс WMI для отображения обновлений Windows, но возвращает только обновления, предоставляемые компонентным обслуживанием (CBS). Обновления, предоставляемые установщиком Microsoft Windows (MSI) или сайтом обновлений Windows, не возвращаются Get-Hotfix / Win32_QuickFixEngineering,

Вы можете попробовать использовать Windows Update API через PowerShell, как показано в следующем примере. Сделайте это и дайте нам знать, если он показывает отсутствующие обновления.

$Session = New-Object -ComObject Microsoft.Update.Session
$Searcher = $Session.CreateUpdateSearcher()
$Searcher.Search("IsInstalled=1").Updates | ft -a Date,Title

РЕДАКТИРОВАТЬ: для поиска по результатам, вы можете использовать Where-Object командлет (или псевдоним Where) и фильтр для конкретного исправления:

$Searcher.Search("IsInstalled=1").Updates | Where {$_.Title -like "*KB2760587*"} | ft date,title

Вам нужно использовать разные способы для получения списка обновлений, установленных разными способами. как установлено wsus или configmgr

Посмотрите здесь

https://social.technet.microsoft.com/wiki/contents/articles/4197.how-to-list-all-of-the-windows-and-software-updates-applied-to-a-computer.aspx

Если когда-нибудь кому-то понадобится получить полный список обновлений с помощью Python, я написал реализацию, которая проверяет наличие обновлений Windows через COM, WMI и реестр, чтобы мы не пропустили обновление в зависимости от метода его установки.

Установить с помощью:

      pip install windows_tools.updates

Применение

      from windows_tools.updates import get_windows_updates

for update in get_windows_updates(filter_duplicates=True):
    print(update)

Вы также можете удалить дублирующийся фильтр (обновления AV-движка и т. д.) с помощьюget_windows_updates(filter_multiple=False)

Другие вопросы по тегам