卸载在特定日期安装的 Office 更新

卸载在特定日期安装的 Office 更新

我想卸载一些似乎导致 Outlook 搜索功能出现问题的 Windows 更新。这些更新是昨天安装的,所以我的方法是“列出部署日期为 xx-xx-xxxx yy:yy:yy 的所有更新”,然后使用卸载命令循环遍历结果。到目前为止,这只是理论部分。

当我尝试在命令行或 PowerShell 中列出更新时,我收到不完整的结果(至少与控制面板进行比较时): 控制面板截图

我找到了多种通过 Powershell 或 WMI 查询列出更新的方法,但它们都没有返回有效结果:

wmic qfe 列表(显然这是最突出的方法):

PS C:\Windows\system32> wmic qfe list
Caption                                     CSName       Description      FixComments  HotFixID   InstallDate  InstalledBy          InstalledOn  Name  ServicePackInEffect  Status
http://support.microsoft.com/?kbid=3199986  SRV-CS-TS01  Update                        KB3199986               NT-AUTORITÄT\SYSTEM  11/20/2016
http://support.microsoft.com/?kbid=3202790  SRV-CS-TS01  Security Update               KB3202790               NT-AUTORITÄT\SYSTEM  5/16/2017
http://support.microsoft.com/?kbid=4013418  SRV-CS-TS01  Update                        KB4013418               NT-AUTORITÄT\SYSTEM  5/30/2017
http://support.microsoft.com/?kbid=4023834  SRV-CS-TS01  Update                        KB4023834               NT-AUTORITÄT\SYSTEM  6/26/2017
http://support.microsoft.com/?kbid=4035631  SRV-CS-TS01  Update                        KB4035631               NT-AUTORITÄT\SYSTEM  8/21/2017
http://support.microsoft.com/?kbid=4049065  SRV-CS-TS01  Update                        KB4049065               NT-AUTORITÄT\SYSTEM  11/21/2017
http://support.microsoft.com/?kbid=4093137  SRV-CS-TS01  Update                        KB4093137               NT-AUTORITÄT\SYSTEM  4/23/2018
http://support.microsoft.com/?kbid=4132216  SRV-CS-TS01  Update                        KB4132216               NT-AUTORITÄT\SYSTEM  6/14/2018
http://support.microsoft.com/?kbid=4465659  SRV-CS-TS01  Security Update               KB4465659               NT-AUTORITÄT\SYSTEM  11/15/2018
http://support.microsoft.com/?kbid=4467694  SRV-CS-TS01  Security Update               KB4467694               NT-AUTORITÄT\SYSTEM  11/15/2018
http://support.microsoft.com/?kbid=4471331  SRV-CS-TS01  Security Update               KB4471331               NT-AUTORITÄT\SYSTEM  12/18/2018
http://support.microsoft.com/?kbid=4471321  SRV-CS-TS01  Security Update               KB4471321               NT-AUTORITÄT\SYSTEM  12/18/2018

从 win32_quickfixengineering 获取 WMIObject:

PS C:\Windows\system32> Get-WmiObject -Class "win32_quickfixengineering"

Source        Description      HotFixID      InstalledBy          InstalledOn
------        -----------      --------      -----------          -----------
SRV-CS-TS01   Update           KB3199986     NT-AUTORITÄT\SYSTEM  20.11.2016 00:00:00
SRV-CS-TS01   Security Update  KB3202790     NT-AUTORITÄT\SYSTEM  16.05.2017 00:00:00
SRV-CS-TS01   Update           KB4013418     NT-AUTORITÄT\SYSTEM  30.05.2017 00:00:00
SRV-CS-TS01   Update           KB4023834     NT-AUTORITÄT\SYSTEM  26.06.2017 00:00:00
SRV-CS-TS01   Update           KB4035631     NT-AUTORITÄT\SYSTEM  21.08.2017 00:00:00
SRV-CS-TS01   Update           KB4049065     NT-AUTORITÄT\SYSTEM  21.11.2017 00:00:00
SRV-CS-TS01   Update           KB4093137     NT-AUTORITÄT\SYSTEM  23.04.2018 00:00:00
SRV-CS-TS01   Update           KB4132216     NT-AUTORITÄT\SYSTEM  14.06.2018 00:00:00
SRV-CS-TS01   Security Update  KB4465659     NT-AUTORITÄT\SYSTEM  15.11.2018 00:00:00
SRV-CS-TS01   Security Update  KB4467694     NT-AUTORITÄT\SYSTEM  15.11.2018 00:00:00
SRV-CS-TS01   Security Update  KB4471331     NT-AUTORITÄT\SYSTEM  18.12.2018 00:00:00
SRV-CS-TS01   Security Update  KB4471321     NT-AUTORITÄT\SYSTEM  18.12.2018 00:00:00

这两个命令的结果基于相同的 WMI 查询,因此我并没有真正期望这里会有不同的结果...我尝试过的一些其他 Powershell Cmdlet 提供了相同的输出(从 Powershell 库中获取 WindowsUpdate - “Install-Module -Name PSWindowsUpdate”,获取 Hotfix)

我尝试了 Get-MSIPatchInfohttps://github.com/heaths/psmsi/wiki/Get-MSIPatchInfo- 列出了相当多的补丁,与控制面板中的列表相对应。补丁的详细信息显示了 PatchCode、ProductCode、State、Displayname 以及一个布尔字段(如果补丁可卸载,则为 bot)没有安装日期

我是否可以假设这里只列出了最新的补丁,并且可以使用以下命令卸载:

Get-MSIPatchInfo | Where-Object {$_.DisplayName -like "*office*"} | Uninstall-MSIPatch -Force

答案1

查看 Windows Update Powershell 模块,install-module pswindowsupdate因为这可能是完成此操作的直接方法

$history = Get-WUHistory -MaxDate (Get-Date).AddDays(-14)

或者您需要比您想要的日期多一天的天数。弹出变量以查看您是否有您要查找的更新write-host $history

按您要查找的日期进行过滤

$filterHistory = $history |Where-Object{$_.Date.tostring('yyyy-MM-dd') -like ((get-date).adddays(-13)).tostring('yyyy-MM-dd') -and $_.KB}

最后一个 -and $_.KB 是为了确保你只获取具有 KBArticleID 的对象

然后将其提供给 Remove-WindowsUpdate

$filterHistory | Remove-WindowsUpdate -KBArticleID $_.KB -whatif

如果您对其功能满意,请删除 -whatif。

相关内容