WUA API无法找到更新

时间:2017-12-06 17:56:04

标签: windows powershell windows-server-2008 patch wuapi

代码示例:

$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:失败:KB2506143的OpenPackageByKB()   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(灾难性故障)

所以我正在寻求使用WUA API。上面的代码段为我提供了$Null返回,但我可以使用Get-Hotfix -ID KB2506143Get-WmiObject -Class Win32_QuickFixEngineering -Filter 'HotFixID="KB2506143"'来查找更新。

This question类似,但在找到补丁后尝试卸载补丁时会被拒绝访问,而我的问题是:如何在第一个补丁中找到补丁放置吗

我不确定修补程序是如何应用的,所以如果我找到它后遇到同样的问题,我至少会that resolution

1 个答案:

答案 0 :(得分:1)

所以这一切的目的是以编程方式升级到WMF5.1,并找到了我想要完成的工作的解决方法。 PowerShell v3在构建过程中使用DISM在操作系统中启用,并且无法由WUA删除,因为WUA没有将其放置在那里。

解决方法1:

dism.exe /Online /Disable-Feature:MicrosoftWindowsPowerShellV3

这会将$PSVersionTable降级为v2,但不会删除补丁KB2506143。这导致需要手动通过UI手动卸载它,因此它并没有真正实现我的需要。

解决方法2:

WMF3无法升级到WMF5,但可以升级到WMF4,然后升级到WMF5(.1)。

最终,我使用wusa.exe在WMF3上安装了WMF4,同时仍然在dism中禁用v3以获得良好的衡量标准,并且在重新启动后成功地在WMF4上安装WMF5.1(再次使用wusa.exe)。

这种限制源于用水户协会无法管理未安装的补丁(通过.msu或WSUS)