sviluppo-web-qa.it

Come installare gli aggiornamenti di Windows dalla riga di comando

È 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 lo fa, 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?

17
Svish

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, controlla WSUS Wiki .

Altrimenti, 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.

12
duffbeer703

È 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 n modulo Powershell che espone un'esperienza simile.

Dopo una rapida occhiata ho anche trovato 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).

4
Oskar Duveborn

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
sysadmin

Se devi correggere i sistemi operativi Windows, in particolare dopo nuove installazioni, dai un'occhiata 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 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 contenere 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 almeno 1 ora per aggiornare una macchina WinXP all'ultima SP e patch, ma non c'è traffico di rete lungo la strada 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 CD patch, 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.

2
geoffc

Al momento non posso aggiungere un commento a risposta di duffbeer7 , quindi qui come risposta separata:

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

1
Olaf Mandel