Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Atualizações de Drivers via Script PowerShell no Windows

Manter os drivers do sistema operacional atualizados é essencial para assegurar a estabilidade, o desempenho e a segurança de um computador. No entanto, realizar essas atualizações manualmente pode ser uma tarefa tediosa e propensa a erros. Para facilitar esse processo, especialmente para administradores de TI e usuários avançados, um script em PowerShell pode ser utilizado para automatizar a busca, download e instalação de atualizações de drivers em máquinas com Windows. Este script interage diretamente com o serviço Windows Update, identificando e instalando automaticamente as atualizações pendentes de drivers, eliminando a necessidade de verificação manual e garantindo que o sistema esteja sempre atualizado.


Exemplo:


1. Criar o Script em PowerShell:


Salve o código a seguir como um arquivo .ps1, por exemplo, AtualizarDrivers.ps1. Abaixo está uma explicação detalhada do que cada parte do script faz:




  • Adicionar Serviço de Atualização do Windows: O script começa criando um objeto COM para gerenciar os serviços de atualização do Windows e adiciona um serviço específico necessário para buscar drivers de terceiros.


     $UpdateSvc = New-Object -ComObject Microsoft.Update.ServiceManager
    $UpdateSvc.AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")



  • Buscar Atualizações de Drivers: Em seguida, o script inicia uma sessão e um pesquisador para procurar especificamente por drivers que ainda não estão instalados.


     $Session = New-Object -ComObject Microsoft.Update.Session
    $Searcher = $Session.CreateUpdateSearcher()
    $Searcher.ServiceID = '7971f918-a847-4430-9279-4a52d1efe18d'
    $Searcher.SearchScope = 1 # Somente na máquina
    $Searcher.ServerSelection = 3 # Terceiros
    $Criteria = "IsInstalled=0 and Type='Driver'"
    $SearchResult = $Searcher.Search($Criteria)
    $Updates = $SearchResult.Updates



  • Exibir Atualizações de Drivers Disponíveis: Se houver atualizações, o script exibirá detalhes como o título, modelo e data da versão de cada driver disponível.


     $Updates | Select-Object Title, DriverModel, DriverVerDate, DriverClass, DriverManufacturer | Format-List



  • Baixar e Instalar as Atualizações: O script baixa e instala os drivers que ainda não estão instalados.


     $UpdatesToDownload = New-Object -Com Microsoft.Update.UpdateColl
    $Updates | ForEach-Object { $UpdatesToDownload.Add($_) | Out-Null }
    $Downloader = $Session.CreateUpdateDownloader()
    $Downloader.Updates = $UpdatesToDownload
    $Downloader.Download()

    $UpdatesToInstall = New-Object -Com Microsoft.Update.UpdateColl
    $Updates | ForEach-Object {
    if ($_.IsDownloaded) {
    $UpdatesToInstall.Add($_) | Out-Null }
    }
    $Installer = $Session.CreateUpdateInstaller()
    $Installer.Updates = $UpdatesToInstall
    $InstallationResult = $Installer.Install()



  • Reiniciar se Necessário: Após a instalação, se for necessário reiniciar, o script notificará o usuário.


     if ($InstallationResult.RebootRequired) {
    Write-Host "Reinicialização necessária! Por favor, reinicie agora." -ForegroundColor Red
    } else {
    Write-Host "Concluído." -ForegroundColor Green
    }



  • Limpeza: Finalmente, o script remove o serviço de atualização adicionado para limpar o ambiente.


     $UpdateSvc.Services | Where-Object { $_.IsDefaultAUService -eq $false -and $_.ServiceID -eq "7971f918-a847-4430-9279-4a52d1efe18d" } | ForEach-Object {
    $UpdateSvc.RemoveService($_.ServiceID)
    }



2. Executando o Script:



  • Abra o PowerShell como Administrador.

  • Execute o script usando o comando:
     .\AtualizarDrivers.ps1

  • Siga as instruções na tela para completar o processo de atualização.


Código Completo do Script:


# Adicionar Serviço de Atualização do Windows
$UpdateSvc = New-Object -ComObject Microsoft.Update.ServiceManager
$UpdateSvc.AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")

# Buscar Atualizações de Drivers
$Session = New-Object -ComObject Microsoft.Update.Session
$Searcher = $Session.CreateUpdateSearcher()
$Searcher.ServiceID = '7971f918-a847-4430-9279-4a52d1efe18d'
$Searcher.SearchScope = 1 # Somente na máquina
$Searcher.ServerSelection = 3 # Terceiros
$Criteria = "IsInstalled=0 and Type='Driver'"
$SearchResult = $Searcher.Search($Criteria)
$Updates = $SearchResult.Updates

# Exibir Atualizações de Drivers Disponíveis
$Updates | Select-Object Title, DriverModel, DriverVerDate, DriverClass, DriverManufacturer | Format-List

# Baixar e Instalar as Atualizações
$UpdatesToDownload = New-Object -Com Microsoft.Update.UpdateColl
$Updates | ForEach-Object { $UpdatesToDownload.Add($_) | Out-Null }
$Downloader = $Session.CreateUpdateDownloader()
$Downloader.Updates = $UpdatesToDownload
$Downloader.Download()

$UpdatesToInstall = New-Object -Com Microsoft.Update.UpdateColl
$Updates | ForEach-Object {
if ($_.IsDownloaded) {
$UpdatesToInstall.Add($_) | Out-Null }
}
$Installer = $Session.CreateUpdateInstaller()
$Installer.Updates = $UpdatesToInstall
$InstallationResult = $Installer.Install()

# Reiniciar se Necessário
if ($InstallationResult.RebootRequired) {
Write-Host "Reinicialização necessária! Por favor, reinicie agora." -ForegroundColor Red
} else {
Write-Host "Concluído." -ForegroundColor Green
}

# Limpeza
$UpdateSvc.Services | Where-Object { $_.IsDefaultAUService -eq $false -and $_.ServiceID -eq "7971f918-a847-4430-9279-4a52d1efe18d" } | ForEach-Object {
$UpdateSvc.RemoveService($_.ServiceID)
}

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.