Jak zmusić system Windows do sprawdzania dostępności aktualizacji?

25

Po nowej instalacji systemu Windows - XP lub 7 - jak mogę „wymusić” aktualizacje systemu Windows?

Nie chcę mieć „starych” aktualizacji systemu Windows po tygodniu, więc czy można to zrobić „jednym krokiem”? Czy są jakieś „magiczne” polecenia, które zmuszają system Windows do sprawdzania dostępności aktualizacji, a jeśli takie istnieją, zainstaluj je?

LanceBaynes
źródło

Odpowiedzi:

12

Możesz sprawdzić i automatycznie zainstalować aktualizacje za pomocą skryptu. Będzie to działać w systemie XP lub Windows 7.

Istnieje wiele skryptów dostępnych do pobrania, oto moje :

' 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 

Uruchamiasz to z wiersza poleceń w następujący sposób:

cscript wsusupdate.vbs

Mój skrypt jest minimalnie funkcjonalny, ale może być nadal przydatny. Dostępne są inne takie skrypty z wieloma dodatkowymi funkcjami, spróbuj wyszukać w Google.

Harry Johnston
źródło
Spróbuję tego! Tymczasem czy ktoś ma jakieś doświadczenie z tym skryptem?
LanceBaynes
Ten skrypt kończy działanie z <59, 3> <null>: 0x80240044. Wiesz, dlaczego to się nie udaje? Próbowałem znaleźć metody, do których odwołuje się to odniesienie, ale nie mogłem zrozumieć, co się dzieje. Czy możesz wskazać mi właściwy kierunek?
daviesgeek
@daviesgeek: 0x80240044 to WU_E_PER_MACHINE_UPDATE_ACCESS_DENIED, tzn. musisz uruchomić skrypt z podwyższonymi uprawnieniami.
Harry Johnston,
Oh dziękuję Ci. Jak podnieść uprawnienia z wiersza poleceń? (przepraszam, jestem guru Linuksa, nie jestem użytkownikiem Windowsa ...)
daviesgeek
1
Vista / Win7: Otwórz menu Start, wpisz cmd i naciśnij klawisze Control-Shift-ENTER zamiast tylko ENTER. W systemie Windows 8 myślę, że klawisz skrótu Windows-X wyświetla menu zawierające administracyjny wiersz poleceń. Lub w dowolnym systemie możesz znaleźć cmd.exe za pomocą Eksploratora, kliknij prawym przyciskiem myszy i wybierz Uruchom jako administrator.
Harry Johnston,
41

Poza zwykłym sposobem korzystania z usługi Windows Update można wymusić sprawdzenie z wiersza polecenia.

Otwórz wiersz polecenia administratora i uruchom:

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

Wuauclt.exe to klient AutoUpdate Windows Update i służy do sprawdzania dostępności aktualizacji (dla różnych wersji platformy MS Windows) z Microsoft Update.

To nie wymusi instalacji.

Ƭᴇcʜιᴇ007
źródło
1
Dodajmy: działa to zarówno na XP, Vistę, jak i 7
kanadyjski Luke REINSTATE MONICA
@Luke Działa również w systemie Windows 2000 SP4. :)
ᴇcʜιᴇ007
1
Jednak w przypadku nowej instalacji lepiej sprawdzić dostępność aktualizacji za pomocą graficznego interfejsu użytkownika (dla systemu Windows Vista +) lub strony Windows Update (wcześniejszej niż Vista). Myślę, że dzięki temu proces pobierania będzie miał wyższy priorytet. Domyślnie BITS pobiera aktualizację tylko wtedy, gdy połączenie sieciowe nie jest zajęte.
billc.cn
2
Skróconą wersją byłby klawisz Windows + R, a następnie wpisz wuauclt / detnow, a następnie naciśnij enter.
Steve Rathbone
5

Aby sprawdzić dostępność aktualizacji, przejdź do Panelu sterowania, zabezpieczeń, Windows Update, a następnie kliknij „Sprawdź aktualizacje”.

wprowadź opis zdjęcia tutaj

surfasb
źródło
a na WinXP? :)
LanceBaynes,
W systemie Windows XP naciśnij Start-> Wszystkie programy -> (Windows | Microsoft) Aktualizuj i przeprowadź wyszukiwanie automatyczne lub ręczne.
Jens Erat
1
To nie dotyczy winXP
M. z CA
2

Innym sposobem wymuszenia prawdziwego ponownego skanowania aktualizacji jest wyczyszczenie tablicy, usuwając wszystkie aktualizacje przechowywane w % windir% \ Windows \ SoftwareDistribution \ Download :

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

Następnie przejdź do Windows Update i „Sprawdź dostępność aktualizacji”. Może to potrwać godzinę, ponieważ każdy aktualizowalny plik w woluminie systemowym jest sprawdzany (kolejne „Sprawdzanie aktualizacji” będzie szybkie). Takie podejście eliminuje błędy, nieuczciwe aktualizacje i zapewnia czysty, aktualny system, przynajmniej na tyle, na ile MS go widzi.

rajah
źródło
Dziękuję, świetna odpowiedź! Szukałem czegoś mocniejszego niż inne odpowiedzi. Moja instalacja systemu Windows 10 jest w jakiś sposób spartaczona, a aktualizacje wydają się już nie nadchodzić. Muszę zmusić go do aktualizacji, mam nadzieję, że to zadziała.
AzP,
1

Korzystam z narzędzia innej firmy o nazwie wuinstall do aktualizacji instalacji nowego systemu Windows. dzięki temu możesz zautomatyzować cały proces aktualizacji, w tym automatyczne ponowne uruchomienie. myślę, że jest to jeden z najszybszych sposobów na uzyskanie świeżego systemu Windows bez udziału użytkownika.

hansi
źródło
0

Przekonałem się, że jeśli w ramach nowej instalacji systemu Windows 7 uaktualniłeś IE lub nie uruchomiłeś jeszcze IE i odpowiedziałeś na pytania wprowadzające, Windows Update wyświetli błąd. Nie znalazłem też sposobu na przejście z Windows Update na Microsoft Update bez przejścia przez GUI, więc ręcznie uruchamiam IE, uruchamiam go, a następnie konfiguruję Windows Update za pomocą GUI, dzięki czemu mogę przejść do Microsoft Update i uniknąć błąd początkowy. Twój przebieg może się różnić.

Kent
źródło
0

Miałem sukces, wykonując kroki opisane w tym poście , instalując IE8 i WI4.5 , uruchomi automatyczne aktualizacje, aby rozpocząć pobieranie.

suma kontrolna
źródło