我想卸载一些似乎导致 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。