Как заставить Windows проверять наличие обновлений?

25

После новой установки Windows - XP или 7 - как я могу «форсировать» обновления Windows?

Я не хочу иметь «старые» обновления Windows через неделю, поэтому можно ли это сделать «за один шаг»? Существуют ли какие-либо «магические» команды, которые заставляют Windows проверять наличие обновлений, и, если они есть, устанавливают их?

LanceBaynes
источник

Ответы:

12

Вы можете проверять и устанавливать обновления автоматически, используя скрипт. Это будет работать в XP или Windows 7.

Есть несколько скриптов, доступных для скачивания, вот мой :

' Written in 2007 by Harry Johnston, University of Waikato, New Zealand.
' This code has been placed in the public domain.  It may be freely
' used, modified, and distributed.  However it is provided with no
' warranty, either express or implied.
'
' Exit Codes:
'   0 = scripting failure
'   1 = error obtaining or installing updates
'   2 = installation successful, no further updates to install
'   3 = reboot needed; rerun script after reboot
'
' Note that exit code 0 has to indicate failure because that is what
' is returned if a scripting error is raised.
'

Set updateSession = CreateObject("Microsoft.Update.Session")

Set updateSearcher = updateSession.CreateUpdateSearcher()
Set updateDownloader = updateSession.CreateUpdateDownloader()
Set updateInstaller = updateSession.CreateUpdateInstaller()

Do

  WScript.Echo
  WScript.Echo "Searching for approved updates ..."
  WScript.Echo

  Set updateSearch = updateSearcher.Search("IsInstalled=0")

  If updateSearch.ResultCode <> 2 Then

    WScript.Echo "Search failed with result code", updateSearch.ResultCode
    WScript.Quit 1

  End If

  If updateSearch.Updates.Count = 0 Then

    WScript.Echo "There are no updates to install."
    WScript.Quit 2

  End If

  Set updateList = updateSearch.Updates

  For I = 0 to updateSearch.Updates.Count - 1

    Set update = updateList.Item(I)

    WScript.Echo "Update found:", update.Title

  Next

  WScript.Echo

  updateDownloader.Updates = updateList
  updateDownloader.Priority = 3

  Set downloadResult = updateDownloader.Download()

  If downloadResult.ResultCode <> 2 Then

    WScript.Echo "Download failed with result code", downloadResult.ResultCode
    WScript.Echo

    WScript.Quit 1

  End If

  WScript.Echo "Download complete.  Installing updates ..."
  WScript.Echo

  updateInstaller.Updates = updateList

  Set installationResult = updateInstaller.Install()

  If installationResult.ResultCode <> 2 Then

    WScript.Echo "Installation failed with result code", installationResult.ResultCode

    For I = 0 to updateList.Count - 1

      Set updateInstallationResult = installationResult.GetUpdateResult(I)
      WScript.Echo "Result for " & updateList.Item(I).Title & " is " & installationResult.GetUpdateResult(I).ResultCode

    Next

    WScript.Quit 1

  End If

  If installationResult.RebootRequired Then

    WScript.Echo "The system must be rebooted to complete installation."

    WScript.Quit 3

  End If

  WScript.Echo "Installation complete."

Loop 

Вы запускаете это из командной строки следующим образом:

cscript wsusupdate.vbs

Мой сценарий только минимально функционален, но все еще может быть полезен. Существуют и другие подобные скрипты со многими дополнительными функциями, попробуйте поиск в Google.

Гарри Джонстон
источник
Я попробую это! Между тем у кого-нибудь есть опыт работы с этим скриптом?
LanceBaynes
Этот скрипт завершается с <59, 3> <null>: 0x80240044. Есть идеи, почему это не удается? Я пытался найти методы, на которые они ссылаются, но я не мог понять, что происходит. Можете ли вы указать мне правильное направление?
daviesgeek
@daviesgeek: 0x80240044 - это WU_E_PER_MACHINE_UPDATE_ACCESS_DENIED, т. е. вам нужно запустить скрипт с повышенными разрешениями.
Гарри Джонстон
Ах ... спасибо. Как бы я поднял разрешения из командной строки? (извините, я гуру Linux, а не человек с Windows ...)
daviesgeek
1
Vista / Win7: откройте меню «Пуск», введите cmd и нажмите control-shift-ENTER вместо просто ENTER. В Windows 8 я думаю, что сочетание клавиш Windows-X вызывает меню, которое включает административную командную строку. Или в любой системе вы можете найти cmd.exe через проводник, щелкнуть правой кнопкой мыши и выбрать «Запуск от имени администратора».
Гарри Джонстон
41

Помимо обычного способа использования Центра обновления Windows, вы можете принудительно выполнить проверку из командной строки.

Откройте командную строку администратора и запустите:

C:\> %windir%\system32\wuauclt.exe /detectnow

Wuauclt.exe является клиентом автообновления Центра обновления Windows и используется для проверки доступных обновлений (для различных версий платформы MS Windows) из Центра обновления Майкрософт.

Это не заставит установку.

Ƭᴇcʜιᴇ007
источник
1
Просто добавлю: это работает и на XP, и на Vista, и на 7
канадец Люк REINSTATE MONICA
@ Luke Это работает и для Windows 2000 SP4. :)
Ƭᴇcʜιᴇ007
1
Однако для новой установки лучше проверить наличие обновлений через графический интерфейс (для Windows Vista +) или веб-сайт Windows Update (до выпуска Vista). Я думаю, что это даст процессу загрузки более высокий приоритет. По умолчанию BITS загружает обновление только тогда, когда сетевое соединение не занято.
billc.cn
2
Сокращенной версией будет Windows key + R, затем введите wuauclt / detectnow и нажмите клавишу ввода.
Стив Рэтбоун
5

Чтобы проверить наличие обновлений, перейдите в Панель управления, Безопасность, Центр обновления Windows, затем нажмите «Проверить наличие обновлений».

введите описание изображения здесь

surfasb
источник
а на winXP? :)
LanceBaynes
В Windows XP нажмите Пуск-> Все программы -> (Windows | Microsoft) Обновление и выполните автоматический или ручной поиск.
Йенс Эрат
1
Это не для winXP
M. of CA
2

Еще один способ принудительно выполнить повторное сканирование обновлений - очистить список, удалив все обновления, хранящиеся в папке % windir% \ Windows \ SoftwareDistribution \ Download :

    NET STOP wuauserv
    RD /S /Q %windir%\SoftwareDistribution\Download
    NET START wuauserv

Затем перейдите в Центр обновления Windows и выберите «Проверить наличие обновлений». Это может занять час, потому что проверяется каждый обновляемый файл на системном томе (последующие «Проверки обновлений» будут быстрыми). Этот подход устраняет ошибки, неудачные обновления и дает чистую, современную систему, по крайней мере, насколько MS это видит.

раджа
источник
Спасибо, отличный ответ! Я искал что-то более убедительное, чем другие ответы. Моя установка Windows 10 в некотором роде не удалась, и обновления, похоже, больше не приходят. Мне нужно заставить его обновить, надеюсь, это работает.
AzP
1

я использую сторонний инструмент под названием wuinstall для обновления свежей установки Windows. с этим вы можете автоматизировать весь процесс обновления, включая автоматические перезагрузки. Я думаю, что это один из самых быстрых способов получить свежие обновления без участия пользователя.

Ханси
источник
0

Я обнаружил, что если в ходе вашей новой установки на Windows 7 вы обновили IE или еще не запускали IE и ответили на вводные вопросы, то Центр обновления Windows выдаст вам ошибку. Я также не нашел способа переключить Центр обновления Windows на Центр обновления Майкрософт без прохождения через графический интерфейс, поэтому я вручную запускаю IE, инициализирую его, а затем настраиваю Центр обновления Windows через графический интерфейс, чтобы я мог переключиться на Центр обновления Майкрософт и избежать первоначальная ошибка Ваш пробег может варьироваться.

Кент
источник