6

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

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

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

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

2 ответа2

9

Я считаю, что командлет Get-Hotfix использует класс WMI Win32_QuickFixEngineering для отображения обновлений 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
1

Вам нужно использовать разные способы для получения списка обновлений, установленных разными способами. как установлено 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .