Come installare gli aggiornamenti di Windows dalla riga di comando


17

È possibile installare gli aggiornamenti di Windows dalla riga di comando? Lo strumento di aggiornamento grafico non sembra funzionare così bene in Windows 7. A volte, a volte no ... Il mio problema è che non riesco a vedere alcun aggiornamento quando faccio clic per visualizzare l'elenco dei dettagli. Quindi, quando ci sono aggiornamenti che non sono selezionati per impostazione predefinita, non riesco a installarli ...

Quindi, c'è un altro modo in cui posso installarli?

Risposte:


12

Non sei sicuro di Windows 7, ma con XP / Vista puoi eseguire il comando seguente per rilevare e scaricare gli aggiornamenti:

wuauclt /detectnow /reportnow

Se hai problemi a farlo funzionare, dai un'occhiata al Wiki WSUS .

In caso contrario, se si dispone di un aggiornamento specifico desiderato, è sufficiente scaricare dal sito Web Microsoft. Se c'è qualche problema che ti impedisce di installare, questo è il modo migliore per scoprirlo, perché i registri di Windows Update sono difficili da gestire.


1
Non credo che quel link sia più valido.
Natalie Adams,

Non funziona per me su Windows 8.1 o Windows Server 2012.
Nu everest,

Il comando che hai dato controllerà gli aggiornamenti e segnalerà lo stato degli aggiornamenti al server WSUS. NON approva, scarica o installa alcun aggiornamento. È necessario aggiungere il parametro / updatenow per forzare un'installazione degli aggiornamenti disponibili.
duct_tape_coder,

Inoltre, in Win10 / 2016, il comando wuauclt è deprecato a favore di usoclient, vedere omgdebugging.com/2017/10/09/…
duct_tape_coder

4

È possibile utilizzare uno script per verificare, scaricare e installare gli aggiornamenti in modo sincrono. Uso spesso una versione modificata di questo vbscript per il patching manuale dei server 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

Sembra funzionare come un fascino per questo, ma non l'ho testato su Windows 7, ovviamente. C'è anche un collegamento a un altro articolo per il targeting di un aggiornamento specifico, se necessario.

C'è anche un modulo Powershell che espone un'esperienza simile.

Dopo una rapida occhiata ho trovato anche questa applicazione di terze parti che utilizza anche l'API di aggiornamento, ma con alcune altre opzioni (anche se richiede di fidarti del codice di terze parti).


2

Windows Update dalla riga di comando:

www.sysadminsoftware.com/udc.html

Lo strumento (Updates Deployment Commander) può fare proprio quello che stai chiedendo. È inoltre possibile passare parametri per evitare determinate patch, target aggiornamenti specifici, riavviare N minuti dopo il completamento, creare report in CSV e così via. Viene fornito anche con un paio di utility GUI.


2

Se devi correggere i sistemi operativi Windows, in particolare dopo nuove installazioni, dai un'occhiata seriamente a Offline Updater .

Usa gli script per scaricare tutte le patch che suggerisci (quindi Win2000, Win XP, Win 2003, Vista, Win2008, Win2012 a 32 e 64 bit ove appropriato), multi lingua, service pack, framework .NET e patch di Office (XP, 2000 , 2003, 2007).

Una volta scaricati tutti, aggiorni ogni patch martedì e ottieni solo le modifiche. Sebbene ottenga i catalouges e stanno allungando ogni giorno (molti mega ora per giro di OS / Office).

Una volta scaricati i file sul tuo computer locale, c'è uno script per crearne immagini CD / DVD (questo lo farà automaticamente per le immagini DVD per sistema operativo ora, se lo desideri).

Quello che faccio è usare una scheda di memoria SD da 4 GB, in un lettore di schede SD che onora la scheda di protezione dalla scrittura. Ero abituato a usare schede da 2 GB, ma riesco a malapena a montare Win XP e la maggior parte di Office si basa su di esso ora, quindi sono passato a schede da 4 GB.

Pertanto, durante la risoluzione dei problemi di una macchina, mi fido di inserire questo dispositivo precedentemente scrivibile in una macchina non attendibile, possibilmente infetta da virus (poiché non ne so nulla, presumo che sia infetto) sapendo che il mio dispositivo è protetto da scrittura.

Quindi posso aggiornarlo come primo passo.

Se si utilizza l'autorun o si avvia l'eseguibile sul dispositivo (chiave, HD esterno, CD, DVD, ovunque sia stato scritto), avvia uno script che utilizza il servizio Windows Update sul computer locale per applicare tutti gli aggiornamenti, ma invece di passare attraverso il filo per scaricarli usa solo la copia locale.

Pertanto, potrebbero essere necessarie più di 1 ora per aggiornare una macchina WinXP all'ultimo SP e patch, ma non vi è traffico di rete lungo il percorso e puoi farlo con il cavo Ethernet completamente scollegato.

Strumento incredibilmente utile!

Non dovremmo correre contro Microsoft, come i ragazzi di AutoUpdate, che stavano pre-costruendo un patch CD, che distribuiva l'immagine del CD. Questo strumento aggiorna gli script e devi andare a prendere tutte le patch sulla tua workstation Windows con licenza.


1

Al momento non posso aggiungere un commento alla risposta di duffbeer703 , quindi qui come risposta separata:

L'ultima versione "buona" del collegamento a WSUSwiki archiviata su Internet Archive è questa . Le opzioni fornite nella risposta originale sono descritte in questa voce FAQ .


Sei a conoscenza di ciò che serve per guadagnare "un po '" di punti reputazione per ottenere il privilegio di commentare? Basta suggerire alcune modifiche (pertinenti). se vengono approvati otterrai +2 rappresentanti per ognuno di essi ... provalo!
Pierre.Vriens,

-2

Non ci credo, Windows Update richiede alcuni ActiveX e altre integrazioni con Internet Explorer per funzionare correttamente.

Poiché Windows 7 è ancora a malapena un candidato alla versione, dovresti aspettarti questo tipo di bug.

Potrebbe essere saggio inviare il bug specifico che stai riscontrando al team di sviluppo se sei un membro di MSDN.


si lo so. Ho già presentato un bug su MSDN.
Sto
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.