it-swarm-pt.tech

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

É 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?

17
Svish

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

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 ótimos para lidar.

12
duffbeer703

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

Também há m 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).

4
Oskar Duveborn

Windows Update na linha de comando:

www.sysadminsoftware.com/udc.html

A ferramenta (Updates Deployment Commander) pode fazer exatamente o que você está solicitando. 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.

2
sysadmin

Se você precisar corrigir os sistemas operacionais Windows, principalmente após novas instalações, dê uma olhada séria em 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 do OS/Office).

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 encaixar o Win XP e a maioria 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 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 patches e correções mais recentes SP e SP $ ===, mas há zero 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 eram os caras do AutoUpdate, que estavam construindo um CD de correção, que distribuía a imagem do CD. Essa ferramenta atualiza os scripts e você precisa obter todos os patches na sua estação de trabalho licenciada do Windows.

2
geoffc

No momento, não posso adicionar um comentário ao resposta por duffbeer7 , então aqui como uma resposta separada:

A última versão "boa" do link para o WSUSwiki conforme arquivada no Internet Archive é this . As opções fornecidas na resposta original estão descritas neste entrada da FAQ .

1
Olaf Mandel