Como instalar as atualizações do Windows a partir da linha de comando

17

É possível instalar atualizações do Windows a partir da linha de comando? A ferramenta de atualização gráfica não parece funcionar tão bem no Windows 7. Às vezes acontece, às vezes não funciona ... Meu problema é que não consigo ver nenhuma atualização quando clico para ver a lista de detalhes. Então, quando há atualizações que não são marcadas por padrão, não consigo instalá-las ...

Então, existe outra maneira de eu conseguir instalar essas coisas?

    
por Svish 19.05.2009 / 23:20

6 respostas

12

Não tenho certeza sobre o Windows 7, mas com o XP / Vista, você pode executar o seguinte comando para detectar e baixar atualizações:

wuauclt /detectnow /reportnow

Se você tiver problemas para fazê-lo funcionar, confira o WSUS Wiki .

Caso contrário, se você tiver uma atualização específica que deseja, basta fazer o download do site da Microsoft. Se houver algum problema que o impeça de instalar, essa é a melhor maneira de descobrir, porque os logs do Windows Update são úteis para lidar com isso.

    
por 19.05.2009 / 23:47
4

Você pode usar um script para verificar, baixar e instalar atualizações de forma síncrona. Eu geralmente uso uma versão modificada de este vbscript para correção manual do Windows Core servidores.

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

Parece funcionar como um encanto para isso, mas eu não testei isso no Windows 7, é claro. Há também um link para outro artigo para segmentar uma atualização específica, se necessário.

Há também um módulo do Powershell que expõe uma experiência semelhante.

Depois de uma rápida olhada, também encontrei este aplicativo de terceiros que também usa a API de atualização , mas com mais algumas opções (embora exigindo que você confie em código de terceiros).

    
por 20.05.2009 / 02:34
2

Windows Update na linha de comando:

www.sysadminsoftware.com/udc.html

A ferramenta (Comando de Implantação de Atualizações) pode fazer exatamente o que você está pedindo. Você também pode transmitir parâmetros para evitar determinados patches, direcionar atualizações específicas, reinicializar N minutos após a conclusão, criar relatórios em CSV e assim por diante. Ele vem com alguns utilitários GUI também.

    
por 14.06.2012 / 14:42
2

Se você tiver que corrigir os sistemas operacionais Windows, especialmente depois de novas instalações, dê uma olhada séria no Atualizador Offline .

Ele usa scripts para fazer o download de todos os patches sugeridos (Win2000, Win XP, Win 2003, Vista, Win2008, Win2012 32 e 64 bits, quando apropriado), multilíngues, service packs, .NET frameworks e patches do Office ( XP, 2000, 2003, 2007).

Depois de baixá-los, basta atualizar todos os patchs de terça-feira e obter apenas as alterações. Apesar de obter os catalouges e eles estão ficando mais longos a cada dia (muitos megas agora por OS / Office rev).

Uma vez que você tenha baixado os arquivos da sua máquina local, há um script para fazer imagens de CD / DVD deles (isso será feito automaticamente para imagens de DVD por SO agora, se você quiser).

O que eu faço é usar um cartão de memória SD de 4 GB, em um leitor de cartão SD que honra a guia de proteção contra gravação. Eu costumava usar cartões de 2GB, mas eu mal consigo encaixar no Win XP e a maior parte do Office é construída agora, então mudei para cartões de 4GB.

Assim, ao solucionar problemas em uma máquina, confio em inserir esse dispositivo gravável em uma máquina não infectada, possivelmente infectada por vírus (já que não sei nada sobre isso, presumo que esteja infectado) sabendo que meu dispositivo está protegido contra gravação.

Assim, posso atualizá-lo como um primeiro passo.

Se você usar a execução automática, ou iniciar o executável no dispositivo (chave, HD externo, CD, DVD, onde quer que você o tenha escrito), ele inicia um script que usa o serviço Windows Update na máquina local para aplicar todas as atualizações , mas em vez de passar o fio para baixá-los, ele usa apenas a cópia local.

Assim, ainda pode levar mais de 1 hora para atualizar uma máquina WinXP para o SP e patches mais recentes, mas não há tráfego de rede ao longo do caminho e você pode fazê-lo com o cabo Ethernet desconectado totalmente.

Ferramenta incrivelmente útil!

Não deve entrar em conflito com a Microsoft, como eram os caras do AutoUpdate, que estavam criando um CD de patch, que distribuiu a imagem do CD. Essa ferramenta atualiza scripts e você precisa obter todos os patches em sua estação de trabalho Windows licenciada.

    
por 20.05.2009 / 04:06
1

Atualmente, não posso adicionar um comentário à resposta por duffbeer703 , então aqui como uma resposta separada:

A última versão "boa" do link para o WSUSwiki arquivado no Arquivo da Internet é isso . As opções fornecidas na resposta original são descritas nesta entrada de FAQ .

    
por 31.05.2016 / 17:13
-2

Eu não acredito que, o Windows Update requer algum ActiveX e outra integração com o Internet Explorer para funcionar corretamente.

Como o Windows 7 ainda é apenas um candidato a lançamento, você deve esperar esses tipos de bugs.

Pode ser sensato enviar o bug específico que você está tendo para a equipe de desenvolvimento se você é um membro do MSDN.

    
por 19.05.2009 / 23:39