Почему в 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
Посмотрите здесь
Если когда-нибудь кому-то понадобится получить полный список обновлений с помощью 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)