Como atualizar automaticamente todos os dispositivos no gerenciador de dispositivos

18

No gerenciador de dispositivos do Windows, é possível "manualmente" iniciar uma atualização automática de um dispositivo. Mas é muito entediante, é necessário clicar em cada dispositivo (como não se sabe se esse dispositivo em particular possui uma atualização disponível) - os pop-ups precisam ser clicados - e é preciso aguardar a conclusão da pesquisa on-line.

Então, eu esperava que houvesse algum script do Powershell capaz de fazer isso, ou talvez uma entrada de registro para que o "Windows Update" resolvesse isso.

(Ehm sim, o Windows NÃO atualiza automaticamente TODOS os dispositivos no gerenciador de dispositivos).

user5542121
fonte
Deseja atualizações de driver em geral ou você tem um modelo de hardware específico em mente?
Persistent13
1
Você já tentou a coisa devcon no prompt de comando?
Antzshrek
Atualizações do @ Persistent13 em geral, nada específico
user5542121
1
O @Antz devcon parece perfeito, pelo menos a documentação diz que pode ser atualizado. docs.microsoft.com/en-us/windows-hardware/drivers/devtest/… Terá que tentar, thx!
user5542121
@ Antz Tentei devcon , pois parece que não faz uma pesquisa online para os drivers. Ele só pode instalar um determinado arquivo inf .
user5542121

Respostas:

12

O artigo Script para instalar ou atualizar drivers diretamente do Microsoft Catalog contém um script do PowerShell para fazer o que é solicitado.

O artigo inclui boas explicações para cada parte do script. Eu reproduzo abaixo apenas o script simples, com apenas pequenas alterações (que eu não testei):

#search and list all missing Drivers

$Session = New-Object -ComObject Microsoft.Update.Session           
$Searcher = $Session.CreateUpdateSearcher() 

$Searcher.ServiceID = '7971f918-a847-4430-9279-4a52d1efe18d'
$Searcher.SearchScope =  1 # MachineOnly
$Searcher.ServerSelection = 3 # Third Party

$Criteria = "IsInstalled=0 and Type='Driver' and ISHidden=0"
Write-Host('Searching Driver-Updates...') -Fore Green  
$SearchResult = $Searcher.Search($Criteria)          
$Updates = $SearchResult.Updates

#Show available Drivers

$Updates | select Title, DriverModel, DriverVerDate, Driverclass, DriverManufacturer | fl

#Download the Drivers from Microsoft

$UpdatesToDownload = New-Object -Com Microsoft.Update.UpdateColl
$updates | % { $UpdatesToDownload.Add($_) | out-null }
Write-Host('Downloading Drivers...')  -Fore Green  
$UpdateSession = New-Object -Com Microsoft.Update.Session
$Downloader = $UpdateSession.CreateUpdateDownloader()
$Downloader.Updates = $UpdatesToDownload
$Downloader.Download()

#Check if the Drivers are all downloaded and trigger the Installation

$UpdatesToInstall = New-Object -Com Microsoft.Update.UpdateColl
$updates | % { if($_.IsDownloaded) { $UpdatesToInstall.Add($_) | out-null } }

Write-Host('Installing Drivers...')  -Fore Green  
$Installer = $UpdateSession.CreateUpdateInstaller()
$Installer.Updates = $UpdatesToInstall
$InstallationResult = $Installer.Install()
if($InstallationResult.RebootRequired) {  
Write-Host('Reboot required! please reboot now..') -Fore Red  
} else { Write-Host('Done..') -Fore Green }

Um pacote poderoso e de uso geral é o PSWindowsUpdate .

Aqui estão alguns tutoriais sobre como instalar e usá-lo:

O pacote adiciona o Get-WUInstallcomando (e outros) com o qual você pode obter e instalar atualizações. A fonte de Get-WUInstalltambém está disponível separadamente no github .

Outro exemplo de uso é encontrado no artigo PS Script para automatizar o Windows e o MS Updates .

harrymc
fonte
1
Lindo! Estendi um pouco o script, como título, #set Window Title $host.ui.RawUI.WindowTitle = "Driver Updater by harrymc"para impedir que o PowerShell se feche Write-Host Write-Host('Press any key to exit ...') -Fore Yellow $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")e execute o script em um lote: @echo off powershell.exe -noprofile -ExecutionPolicy Unrestricted -command "&{start-process powershell -ArgumentList ' -ExecutionPolicy Unrestricted -noprofile -file ""%~dp0update.ps1""' -verb RunAs} enquanto o script ps se chama update.ps1 e está no mesmo diretório.
user5542121
Ah, desculpe, só percebi agora que tenho que pressionar o botão para dar a recompensa, pensei que aceitar a resposta é suficiente.
user5542121
Obrigado. Aceitar a resposta é suficiente, mas a recompensa é concedida somente no final dos 7 dias do período contábil.
harrymc
1
Ele não funcionou para mim ( Exception from HRESULT: 0x80240024) #
30719 JinSnow
@ JinSnow: Seria melhor postar uma pergunta separada com detalhes sobre o que você fez.
28919 harrymc
2

Existe um aplicativo Windows Update MiniTool que pode obter esses drivers, mas é capaz de muito mais - em relação às atualizações do Windows.

(Pessoalmente, ainda prefiro o script do harrymc, é indolor - basta iniciá-lo e pronto)


Citado no Fórum Inglês:

Captura de tela do aplicativo

An alternative to the standard Windows Update
What you can do:

 - Check for updates
 - Download updates
 - Installing Updates
 - Deleting installed updates
 - Hiding unwanted updates
 - Get direct links to the *.cab / *.Exe / *.Psf update files
 - View update history
 - Configure Automatic Updates
user5542121
fonte
Eu ainda uso isso no W10, ele interrompe as atualizações automáticas, que é a melhor característica.
Moab
1

Outra ferramenta para atualizar, muito semelhante ao "Windows Update MiniTool":

https://github.com/DavidXanatos/wumgr

Link para download: https://github.com/DavidXanatos/wumgr/releases/latest

Captura de tela da ferramenta vinculada

user5542121
fonte
Parece um roubo de software que encontrei há vários anos (2015), o desenvolvimento parou e não pode mais ser encontrado, ele era russo, sua última versão era wumt_v30.07.2016 >>>>>>>>>>>>> >> wilderssecurity.com/threads/windows-update-minitool.380535
Moab
1
Parece-me um garfo, não um rasgo. Encontrei primeiro o que você vinculou e adicione como resposta, mais tarde encontrei esse .. e parece mais atualizado.
user5542121
Minha versão antiga de 2015 parece funcionar muito bem, mas obrigado pelo link para o fork.
Moab