Como instalar as atualizações do Windows na linha de comando

17

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

Então, existe outra maneira de instalá-los?

Svish
fonte

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, consulte o Wiki do WSUS .

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

duffbeer703
fonte
1
Eu não acho que esse link seja mais válido.
Natalie Adams
Não funciona para mim no Windows 8.1 ou no Windows Server 2012. #
ever everest
O comando que você deu verificará atualizações e reportará o status da atualização para o servidor WSUS. NÃO aprova, baixa ou instala nenhuma atualização. Você precisa adicionar o parâmetro / updatenow para forçar a instalação das atualizações disponíveis.
duct_tape_coder
Além disso, no Win10 / 2016, o comando wuauclt foi descontinuado em favor do usuário, veja omgdebugging.com/2017/10/09/…
duct_tape_coder
4

Você pode usar um script para verificar, baixar e instalar atualizações de forma síncrona. Costumo usar uma versão modificada deste vbscript para correção manual de servidores 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

Parece funcionar como um encanto para isso, mas não o testei 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 Powershell que expõe uma experiência semelhante.

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

Oskar Duveborn
fonte
2

Windows Update na linha de comando:

www.sysadminsoftware.com/udc.html

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

sysadmin
fonte
2

Se você precisar corrigir os sistemas operacionais Windows, principalmente após novas instalações, consulte o Atualizador offline .

Ele usa scripts para baixar todos os patches que você sugere (portanto, Win2000, Win XP, Win 2003, Vista, Win2008, Win2012 de 32 e 64 bits, quando apropriado), vários idiomas, service packs, estruturas .NET e patches do Office (XP, 2000 , 2003, 2007).

Depois de baixá-los, basta atualizar todos os patches de terça-feira e obter apenas as alterações. Embora receba os catalisadores e eles estejam ficando mais longos a cada dia (muitos megas agora por rev.

Depois de baixar os arquivos em sua máquina local, existe um script para criar imagens em CD / DVD (será automaticamente agora para imagens de DVD por sistema operacional, se você desejar).

O que faço é usar um cartão de memória SD de 4 GB, em um leitor de cartão SD que respeite a guia de proteção contra gravação. Eu costumava usar cartões de 2 GB, mas mal consigo instalar o Win XP e a maior parte do Office se baseia nele agora, então mudei para cartões de 4 GB.

Portanto, ao solucionar problemas de uma máquina, confio em inserir esse dispositivo gravável em uma máquina não confiável e possivelmente infectada por vírus (já que não sei nada sobre ela, presumo que ela esteja infectada) 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 gravado), ele inicia um script que usa o serviço Windows Update na máquina local para aplicar todas as atualizações. de atravessar o fio para baixá-los, apenas usa a cópia local.

Portanto, ainda pode levar mais de 1 hora para atualizar uma máquina WinXP para os 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 totalmente desconectado.

Ferramenta incrivelmente útil!

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

geoffc
fonte
1

No momento, 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 arquivada no Internet Archive é essa . As opções fornecidas na resposta original estão descritas nesta entrada da FAQ .

Olaf Mandel
fonte
Você está ciente do que é preciso para ganhar "um pouco" de pontos de reputação para obter o privilégio de comentar? Apenas sugira algumas edições (relevantes). se eles forem aprovados, você receberá +2 representantes para cada um deles ... experimente!
Pierre.Vriens
-2

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

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

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

WerkkreW
fonte
sim, eu sei. Já registrou um bug no MSDN. Apenas à procura de um método alternativo até que seja corrigido =)
Svish