Windows - как принудительно запустить автоматическое обновление

http://technet.microsoft.com/en-us/library/cc720477

Чтобы в Windows XP принудительно запустить автоматическое обновление, вводим в командной строке

> wuauclt.exe /detectnow

Эта команда инициирует агента WSUS для проверки имеющихся обновлений и немедленной установки.

Очищаем все данные и настройки, принудительно запускаем обновление:

net stop wuauserv
REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v LastWaitTimeout /f
REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v DetectionStartTime /f
Reg Delete "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v NextDetectionTime /f
net start wuauserv
wuauclt /detectnow 

  • /DetectNow - Запустить немедленный опрос сервера WSUS на наличие обновлений
  • /resetAuthorization - Сбросить авторизацию на сервере и клиенте. Фактически это новая регистрация на сервере WSUS. Полезна когда клиент подглюкивает, удаляем его на сервере и командой wuauclt /detectnow /resetAuthorization заново регистрируем на сервере с одновременным запросом списка обновлений
  • /reportnow Сбросить статистику на сервер
  • /ShowSettingsDialog - Показывает диалог настройки расписания установки обновлений
  • /ResetEulas - сбросить соглашение EULA для обновлений
  • /ShowWU - переход на сайт обновлений MS
  • /ShowWindowsUpdate - переход на сайт обновлений MS
  • /UpdateNow - Немедленно запускает процесс обновления, аналогичен клику кнопки в окне уведомлений о наличии обновлений
  • /DemoUI - Показывает значок в трее - диалог настройки расписания установки обновлений или установки в зависимости от статуса

Посмотреть какие обновления установлены на компьютере можно командой:

wmic qfe list

Поиск определенного обновления:

wmic qfe list | find "2998527"

PowerShell также позволяет просмотреть установленные обновления. Сделать это можно с помощью командлета Get-WmiObject, например:

Get-WmiObject -Class win32_quickfixengineering -Filter ″HotFixID=′KB982018′″ | fl HotFixID, InstalledOn, Description, Caption

Как видите, команда несколько сложнее и требуется дополнительно отформатировать вывод, однако результат такой же, как и у утилиты wmic. Что неудивительно, так как в обоих случаях данные получаются путем обращения к WMI классу win32_quickfixengineering. Обратите внимание, что он содержит данные только об обновлениях операционной системы и ее компонентов. Получить информацию об обновлениях для других продуктов MS (Office, Exchange и т.п) таким образом не получится.

В Windows Server 2012 R2 имеется модуль SoftwareInventoryLogging, предназначенный для инвентаризации установленного ПО. В состав этого модуля входит командлет Get-SilWindowsUpdate, с помощью которого также можно посмотреть установленные обновления. Например:

Get-SilWindowsUpdate -ID kb3149090

Этот командлет также использует WMI запрос к классу MsftSil_WindowsUpdate. Get-SilWindowsUpdate очень прост и удобен в использовании, но к сожалению доступен он далеко не везде. Модуль SoftwareInventoryLogging присутствует только в серверных ОС начиная с Windows Server 2012 R2 с установленным обновлением KB3000850.

Еще один вариант поиска обновлений — просмотр истории клиента обновления. Например:

$session = New-Object -ComObject ″Microsoft.Update.Session″
$searcher = $session.CreateUpdateSearcher()
$hystorycount = $searcher.GetTotalHistoryCount()
$searcher.QueryHistory(0,$HistoryCount) | where {$_.Title -match ″kb2506143″} | fl Date,Title,Description,SupportUrl

Способ (в отличие от предыдущих) достаточно громоздкий, однако позволяет найти информацию об всех обновлениях обновления (как самой ОС, так и доп. приложений). Таким образом можно найти обновления, которые были установлены с помощью системы автоматического обновления. Если обновления были загружены и установлены вручную (или с помощью каких либо пользовательских сценариев), то таким образом найти их не удастся.

  • software/microsoft/automatic-updates.txt
  • Последнее изменение: 2019/02/21 12:46
  • fireball