Jak zainstalować aktualizacje systemu Windows z wiersza polecenia

17

Czy można zainstalować aktualizacje systemu Windows z wiersza polecenia? Wydaje się, że narzędzie do aktualizacji graficznej nie działa tak dobrze w systemie Windows 7. Czasami tak się dzieje, a czasem nie ... Moim problemem jest to, że nie widzę żadnych aktualizacji, kiedy klikam, aby wyświetlić listę szczegółów. Więc jeśli są aktualizacje, które nie są domyślnie wyłączone, nie mogę ich zainstalować ...

Czy jest więc inny sposób na zainstalowanie ich?

Svish
źródło

Odpowiedzi:

12

Nie jesteś pewien systemu Windows 7, ale w systemie XP / Vista możesz uruchomić następujące polecenie, aby wykryć i pobrać aktualizacje:

wuauclt /detectnow /reportnow

Jeśli masz problemy z uruchomieniem go, sprawdź Wiki WSUS .

W przeciwnym razie, jeśli masz konkretną aktualizację, którą chcesz, po prostu pobierz ją z witryny Microsoft. Jeśli wystąpi jakiś problem uniemożliwiający instalację, jest to najlepszy sposób, aby się dowiedzieć, ponieważ dzienniki usługi Windows Update są bardzo przydatne.

duffbeer703
źródło
1
Nie sądzę, aby ten link był już ważny.
Natalie Adams
Nie działa dla mnie w systemie Windows 8.1 lub Windows Server 2012.
nu everest
Podane polecenie sprawdzi dostępność aktualizacji i zgłosi status aktualizacji do serwera WSUS. NIE zatwierdza, nie pobiera ani nie instaluje żadnych aktualizacji. Musisz dodać parametr / updatenow, aby wymusić instalację dostępnych aktualizacji.
duct_tape_coder
Warto również zauważyć, że w Win10/2016 2016 polecenie wuauclt jest przestarzałe na korzyść usoclient, patrz omgdebugging.com/2017/10/09/…
duct_tape_coder
4

Możesz użyć skryptu do synchronicznego sprawdzania, pobierania i instalowania aktualizacji. Często używam zmodyfikowanej wersji tego vbscript do ręcznego łatania serwerów Windows Core.

Set updateSession = CreateObject("Microsoft.Update.Session")
updateSession.ClientApplicationID = "MSDN Sample Script"

Set updateSearcher = updateSession.CreateUpdateSearcher()

WScript.Echo "Searching for updates..." & vbCRLF

Set searchResult = _
updateSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0")

WScript.Echo "List of applicable items on the machine:"

For I = 0 To searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    WScript.Echo I + 1 & "> " & update.Title
Next

If searchResult.Updates.Count = 0 Then
    WScript.Echo "There are no applicable updates."
    WScript.Quit
End If

WScript.Echo vbCRLF & "Creating collection of updates to download:"

Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl")

For I = 0 to searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    addThisUpdate = false
    If update.InstallationBehavior.CanRequestUserInput = true Then
        WScript.Echo I + 1 & "> skipping: " & update.Title & _
        " because it requires user input"
    Else
        If update.EulaAccepted = false Then
            WScript.Echo I + 1 & "> note: " & update.Title & _
            " has a license agreement that must be accepted:"
            WScript.Echo update.EulaText
            WScript.Echo "Do you accept this license agreement? (Y/N)"
            strInput = WScript.StdIn.Readline
            WScript.Echo 
            If (strInput = "Y" or strInput = "y") Then
                update.AcceptEula()
                addThisUpdate = true
            Else
                WScript.Echo I + 1 & "> skipping: " & update.Title & _
                " because the license agreement was declined"
            End If
        Else
            addThisUpdate = true
        End If
    End If
    If addThisUpdate = true Then
        WScript.Echo I + 1 & "> adding: " & update.Title 
        updatesToDownload.Add(update)
    End If
Next

If updatesToDownload.Count = 0 Then
    WScript.Echo "All applicable updates were skipped."
    WScript.Quit
End If

WScript.Echo vbCRLF & "Downloading updates..."

Set downloader = updateSession.CreateUpdateDownloader() 
downloader.Updates = updatesToDownload
downloader.Download()

Set updatesToInstall = CreateObject("Microsoft.Update.UpdateColl")

rebootMayBeRequired = false

WScript.Echo vbCRLF & "Successfully downloaded updates:"

For I = 0 To searchResult.Updates.Count-1
    set update = searchResult.Updates.Item(I)
    If update.IsDownloaded = true Then
        WScript.Echo I + 1 & "> " & update.Title 
        updatesToInstall.Add(update) 
        If update.InstallationBehavior.RebootBehavior > 0 Then
            rebootMayBeRequired = true
        End If
    End If
Next

If updatesToInstall.Count = 0 Then
    WScript.Echo "No updates were successfully downloaded."
    WScript.Quit
End If

If rebootMayBeRequired = true Then
    WScript.Echo vbCRLF & "These updates may require a reboot."
End If

WScript.Echo  vbCRLF & "Would you like to install updates now? (Y/N)"
strInput = WScript.StdIn.Readline
WScript.Echo 

If (strInput = "Y" or strInput = "y") Then
    WScript.Echo "Installing updates..."
    Set installer = updateSession.CreateUpdateInstaller()
    installer.Updates = updatesToInstall
    Set installationResult = installer.Install()

    'Output results of install
    WScript.Echo "Installation Result: " & _
    installationResult.ResultCode 
    WScript.Echo "Reboot Required: " & _ 
    installationResult.RebootRequired & vbCRLF 
    WScript.Echo "Listing of updates installed " & _
    "and individual installation results:" 

    For I = 0 to updatesToInstall.Count - 1
        WScript.Echo I + 1 & "> " & _
        updatesToInstall.Item(i).Title & _
        ": " & installationResult.GetUpdateResult(i).ResultCode   
    Next
End If

Wygląda na to, że działa jak urok, ale oczywiście nie testowałem tego pod Windows 7. Istnieje również link do innego artykułu, w razie potrzeby ukierunkowanego na określoną aktualizację.

Istnieje również moduł Powershell, który udostępnia podobne wrażenia.

Po szybkim spojrzeniu znalazłem również aplikację innej firmy, która również korzysta z interfejsu API aktualizacji, ale z kilkoma dodatkowymi opcjami (choć wymaga zaufania do kodu innej firmy).

Oskar Duveborn
źródło
2

Windows Update z wiersza poleceń:

www.sysadminsoftware.com/udc.html

Narzędzie (Updates Deployment Commander) może robić to, o co prosisz. Możesz także przekazać parametry, aby uniknąć niektórych poprawek, celować w określone aktualizacje, ponownie uruchomić N po minutach po zakończeniu, tworzyć raporty w CSV itd. Zawiera również kilka narzędzi GUI.

sysadmin
źródło
2

Jeśli musisz łatać systemy operacyjne Windows, szczególnie po nowych instalacjach, poważnie przyjrzyj się aplikacji Offline Updater .

Wykorzystuje skrypty do pobierania wszystkich sugerowanych poprawek (więc Win2000, Win XP, Win 2003, Vista, Win2008, Win2012 32 i 64 bit, w stosownych przypadkach), wielu języków, dodatków Service Pack, platform .NET i łatek Office (XP, 2000 , 2003, 2007).

Po pobraniu ich wszystkich aktualizujesz wtorek we wszystkie łaty i otrzymujesz tylko zmiany. Chociaż robi się to katale i stają się coraz dłuższe każdego dnia (wiele megapikseli na OS / Office rev).

Po pobraniu plików na komputer lokalny dostępny jest skrypt do tworzenia ich obrazów CD / DVD (będzie to teraz automatycznie dla obrazów DVD dla systemu operacyjnego, jeśli chcesz).

Używam karty pamięci SD 4 GB w czytniku kart SD, który honoruje kartę ochrony przed zapisem. Kiedyś korzystałem z kart 2 GB, ale ledwo mogę dopasować Win XP i większość pakietu Office teraz na nim opiera, więc przeszedłem na karty 4 GB.

Dlatego podczas rozwiązywania problemów z komputerem ufam, że włożę to wcześniej zapisywalne urządzenie do niezaufanego, prawdopodobnie zainfekowanego wirusem komputera (ponieważ nic o nim nie wiem, zakładam, że jest zainfekowane), wiedząc, że moje urządzenie jest chronione przed zapisem.

Dlatego mogę załatać go na bieżąco jako pierwszy krok.

Jeśli korzystasz z funkcji automatycznego uruchamiania lub uruchamiasz plik wykonywalny na urządzeniu (klucz, zewnętrzny HD, CD, DVD, gdziekolwiek napisałeś), uruchamia skrypt, który korzysta z usługi Windows Update na komputerze lokalnym, aby zastosować wszystkie aktualizacje, ale zamiast tego przechodząc przez drut, aby je pobrać, używa tylko lokalnej kopii.

W związku z tym aktualizacja komputera WinXP do najnowszej wersji SP i poprawek może nadal potrwać ponad 1 godzinę, ale po drodze nie ma ruchu sieciowego i można to zrobić przy całkowicie odłączonym kablu Ethernet.

Niezwykle przydatne narzędzie!

Nie powinno działać z obrzydliwością Microsoftu, tak jak chłopaki z AutoUpdate, którzy wcześniej budowali patch CD, który rozprowadzał obraz CD. To narzędzie aktualizuje skrypty i musisz pobrać wszystkie poprawki na licencjonowanej stacji roboczej Windows.

geoffc
źródło
1

Obecnie nie mogę dodać komentarza do odpowiedzi przez duffbeer703 , więc tutaj jako osobna odpowiedź:

Ostatnia „dobra” wersja linku do WSUSwiki zarchiwizowana w Internet Archive to . Opcje podane w oryginalnej odpowiedzi są opisane w tym wpisie FAQ .

Olaf Mandel
źródło
Czy wiesz, co trzeba zrobić, aby zdobyć „trochę” punktów reputacji, aby uzyskać uprawnienia do komentowania? Po prostu zasugeruj niektóre (odpowiednie) zmiany. jeśli zostaną zatwierdzone, otrzymasz +2 powtórzenia dla każdego z nich ... spróbuj!
Pierre.Vriens
-2

Nie sądzę, aby Windows Update wymagał pewnej integracji ActiveX i innej z Internet Explorerem do prawidłowego działania.

Ponieważ Windows 7 wciąż jest zaledwie kandydatem do wydania, należy spodziewać się tego rodzaju błędów.

Być może mądrze jest zgłosić konkretny błąd, który masz do zespołu programistów, jeśli jesteś członkiem MSDN.

WerkkreW
źródło
tak, wiem. Już zgłosiłem błąd w MSDN. Po prostu szukam alternatywnej metody, dopóki nie zostanie naprawiona =)
Svish