API АВП не может найти обновление
Пример кода:
$UpdateSession = New-Object -ComObject 'Microsoft.Update.Session'
$UpdateSearcher = $UpdateSession.CreateUpdateSearcher()
$Updates = $UpdateSearcher.Search('IsInstalled=1')
$Updates | Where-Object { $_.Title -like '*KB2506143*' }
Я пытаюсь удалить WMF3 программно, но продолжаю получать ошибки при попытке использовать wusa.exe,
wusa /uninstall /kb:2506143 /quiet /norestart /log:C:\log.evt
CbsClient:: CbsClient.00110: не удалось создать экземпляр сеанса CBS
CbsClient::CbsClient.00127: выход с кодом ошибки 0X80040154 (класс не зарегистрирован)
UninstallWorker.00664: начало поиска
CbsClient::OpenPackageByKB.00268: сеанс CBS не инициализирован.
CbsClient:: OpenPackageByKB.00320: выход с кодом ошибки 0X8000ffff (катастрофический сбой)
UninstallWorker.00667: Ошибка: OpenPackageByKB() для KB2506143
UninstallWorker.00799: выход с кодом ошибки 0X8000ffff (катастрофический сбой)
RebootIfRequested.01446: перезагрузка не запланирована. IsRunWizardStarted: 0, IsRebootRequired: 0, RestartMode: 1
Невозможно удалить обновление Windows из-за ошибки 2147549183 "Катастрофический сбой" (Командная строка: "C:\windows\System32\wusa.exe /uninstall /kb:2506143 /quiet /norestart /log:C:\log.evt
")
wWinMain.01962: не удалось удалить обновление; Ошибка: 0X8000ffff, катастрофический сбой. Командная строка:C:\windows\System32\wusa.exe /uninstall /kb:2506143 /quiet /norestart /log:C:\log.evt
wWinMain.01998: выход с кодом ошибки 0X8000ffff (катастрофический сбой)
поэтому я продолжаю использовать API-интерфейс WUA. Приведенный выше фрагмент кода дает мне $Null
вернуть, но я могу использовать Get-Hotfix -ID KB2506143
или же Get-WmiObject -Class Win32_QuickFixEngineering -Filter 'HotFixID="KB2506143"'
найти обновление.
Этот вопрос похож, но он получает отказ в доступе при попытке удалить патч после того, как он уже найден, в то время как мой вопрос: как мне найти патч в первую очередь?
Я не уверен, как патч был применен, поэтому, если я столкнусь с той же проблемой, как только найду его, у меня будет , по крайней мере, такое разрешение.
1 ответ
Таким образом, целью всего этого было программное обновление до WMF5.1, и я нашел обходной путь для того, чего я пытался достичь. PowerShell v3 был включен в ОС с использованием DISM во время процесса сборки и не может быть удален WUA, поскольку он не был там размещен WUA.
Обходной путь 1:
dism.exe /Online /Disable-Feature:MicrosoftWindowsPowerShellV3
Это понижает $PSVersionTable
в v2
, но это не удаляет патч KB2506143
, Это вызывает необходимость удалить его через пользовательский интерфейс вручную, чтобы он действительно не достиг того, что мне нужно.
Обходной путь 2:
WMF3 нельзя обновить до WMF5, но его можно обновить до WMF4, а затем до WMF5(.1).
В конечном итоге я установил WMF4 поверх WMF3 с wusa.exe
в то время как все еще отключение v3 в dism для хорошей меры и было успешно установлено WMF5.1 по WMF4 после перезагрузки (снова, с wusa.exe
).
Ограничение связано с тем, что АВП не может управлять исправлениями, которые не были установлены (через .msu
или WSUS)