Я хочу удалить некоторые обновления Windows, которые вызывают проблемы с функцией поиска Outlooks. Обновления были установлены вчера, поэтому мой подход будет выглядеть примерно так: «Список всех обновлений с датой развертывания 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
Get-WMIObject из win32_quickfixengineering:
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, которые я пробовал, предоставили тот же результат (Get-WindowsUpdate из галереи Powershell - «Install-Module -Name PSWindowsUpdate ", Get-Hotfix)
Я попробовал Get-MSIPatchInfo из https://github.com/heaths/psmsi/wiki/Get-MSIPatchInfo - в котором перечислено довольно много патчей и соответствует моему списку в панели управления. Подробная информация о патчах раскрывает PatchCode, ProductCode, State, Displayname и логическое поле, если патч можно удалить, бот нет даты установки.
Правильно ли я предполагаю, что здесь перечислены только последние исправления, которые можно удалить примерно так:
Get-MSIPatchInfo | Where-Object {$_.DisplayName -like "*office*"} | Uninstall-MSIPatch -Force
Посмотрите на модуль 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, если вас устраивает то, что он будет делать.