- PowerShell Permite listar, filtrar e exportar. Drivers com cmdlets como Get-WmiObject e Get-WindowsDriver.
- driverquery, o Administrador do dispositivo e o SCCM (Get-CMDriver) complementam o inventário de controladores.
- Alguns drivers carregados dinamicamente exigem ferramentas adicionais, como o WinDbg ou o verificador de drivers.
- Módulos como o PSWindowsUpdate e utilitários externos facilitam a atualização e a manutenção dos drivers.
Em ambientes Windows, Controlar quais drivers estão instalados e qual versão de cada um possui. É fundamental para manter a estabilidade do sistema, solucionar problemas de tela azul ou preparar migrações. O PowerShell tornou-se uma ferramenta incrivelmente conveniente para realizar esse tipo de inventário sem precisar acessar o Gerenciador de Dispositivos um por um.
Nas linhas seguintes, você verá Como listar controladores a partir do PowerShell de várias maneiras e como exportá-los. analisar os arquivos com calma e verificar as diferenças em relação aos outros. comandos como driverquery ou ferramentas gráficas, e até mesmo como lidar com cenários mais avançados, como imagens offline ou drivers carregados dinamicamente.
O que é um driver e por que você gostaria de listá-lo usando o PowerShell?

No Windows, um controlador ou driver é um pequeno bloco de software que atua como intermediário entre o sistema operacional e um componente do Hardwares (placa gráfica, chipset, armazenamentoperiféricos USBetc.). Embora o espaço que ocupam no código não seja enorme, seu impacto na estabilidade do sistema é gigantesco.
Quando um fator crítico (por exemplo, armazenamento, rede, gráficos ou chipsetMau funcionamento pode causar travamentos, perda de desempenho e até mesmo telas azuis (BSOD)Por isso, ter uma lista clara dos drivers instalados e suas versões é tão útil ao depurar erros ou se preparar para uma grande atualização.
Antes de se apressar em alterar, desinstalar ou reverter drivers, é uma boa ideia Minimize os riscos com um ponto de restauração do sistema.Dessa forma, você pode reverter a alteração caso uma atualização de driver dê errado e o computador comece a se comportar de forma estranha ou sequer inicialize corretamente.
Além do restaurante, é recomendável Faça backup de dados importantes. (documentos, fotos, projetos de trabalho, etc.), especialmente se você for mexer com drivers de armazenamento, pois um erro pode fazer com que o sistema não monte as unidades corretamente ou corrompa as informações.
Comando básico em PowerShell para listar os drivers instalados
A maneira mais direta de obter um inventário de controladores a partir do PowerShell é dependa do WMIUm dos comandos mais usados é:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion
Com este cmdlet, O PowerShell consulta a classe WMI Win32_PnPSignedDriver. e retorna uma lista dos drivers PnP assinados, juntamente com o nome do dispositivo e a versão do driver que o sistema tem atualmente associada a ele.
Se você quiser um pouco mais de contexto sobre cada motorista, pode adicionar campos como o nome amigável, data de publicação ou fabricante. Por exemplo:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, Manufacturer, DriverVersion, DriverDate
Com esta consulta, você obterá Informações muito mais completas para cada entrada.Isso permite detectar versões antigas, fabricantes específicos ou drivers que não foram atualizados há anos.
Como exportar a lista de motoristas para um arquivo (TXT ou CSV)
Em situações reais, simplesmente visualizar a lista na tela raramente é suficiente. A abordagem mais prática é... Salvar o resultado em um arquivo para analisá-lo no Excel, compartilhá-lo com a equipe ou mantê-lo como um instantâneo do estado do sistema antes de fazer qualquer alteração, por exemplo, antes excluir drivers antigos.
Se você precisar apenas de uma listagem rápida em texto simples, pode redirecionar a saída para um arquivo:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion > C:\drivers.txt
Esse comando cria um arquivo C:\drivers.txt Com uma lista simples de dispositivos e versões. Ideal para consulta rápida ou para anexar a um relatório sem muita complicação.
Quando você busca algo mais fácil de usar para filtrar e classificar, a melhor opção é utilizar CSV e o cmdlet Export-CSVUm exemplo muito comum seria:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, DriverVersion, DriverDate | Export-CSV -Path "./MisDrivers.csv" -NoTypeInformation
Com este comando, um arquivo chamado MeusDrivers.csv que você pode abrir no Excel ou em qualquer programa de planilha para Ordenar por versão, filtrar por data do driver, pesquisar por fabricantes específicos, etc.
Embora às vezes se diga que o PowerShell "não permite exportar" a lista de drivers, na realidade, Sim, pode ser exportado perfeitamente. Utilizando o redirecionamento de saída ou o Export-CSV, como você acabou de ver, você pode copiar, colar ou trabalhar com essas informações onde quiser.
Filtre os drivers por fabricante, nome ou texto específico.
Normalmente, você não vai querer ver todos os drivers de uma vez, mas sim se concentrar em um fabricante ou tipo de dispositivo específico. Para isso, você pode Encadeando filtros com Where-Object sobre as propriedades de cada driver.
Por exemplo, se você estiver interessado em manter apenas os drivers para IntelVocê poderia fazer algo tão simples quanto:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion | Where-Object { $_.DeviceName -like "*Intel*" }
Este comando percorre todas as entradas retornadas pelo WMI e Ele só mantém os dispositivos cujos nomes contêm a string "Intel".Usar o asterisco como caractere curinga permite pesquisar correspondências parciais em qualquer lugar do texto.
A mesma ideia pode ser usada para localizar drivers relacionados a um aplicativo específico ou tipo de hardware, por exemplo, para atualizar drivers USBSe você souber parte do nome, o fabricante ou algum padrão da rota, você pode Adapte o filtro à propriedade mais confortável. em cada caso.
Visualize os drivers no Gerenciador de Dispositivos e em outras ferramentas do Windows.
Embora o PowerShell seja muito poderoso para automatizar e exportar listas, o Windows ainda oferece Ferramentas gráficas clássicas para gerenciamento de controladores que deve ser conhecido e combinado com o caminho do comando.
O primeiro ponto de referência é o Administrador do dispositivoVocê pode acessar essa opção clicando com o botão direito do mouse em "Este Computador" e escolhendo "Gerenciar", ou mais rapidamente usando o menu de contexto do botão Iniciar (Windows + X). Lá, você verá uma árvore com todas as categorias de hardware instaladas no sistema.
Dispositivos que apresentam problemas de instalação ou operação geralmente aparecem com um ícone de aviso amareloSe você clicar duas vezes em qualquer um deles, a janela de propriedades será aberta, onde você poderá verificar o status do dispositivo e acessar a guia "Driver".
Nessa aba você encontrará opções como: "Detalhes do driver", "Atualizar driver", "Reverter driver", "Desativar" ou "Desinstalar"Essas ações permitem visualizar os arquivos do driver, procurar novas versões, reverter para uma versão anterior, desativar o dispositivo sem removê-lo completamente ou remover o driver do sistema por completo.
Além dessas ferramentas, o Windows inclui o comando driverquery para usar a partir do simbolo do sistema (CMD). Correndo driverquery Você receberá uma lista de todos os drivers instalados, e com driverquery /v Você verá informações mais detalhadas, como uso de memória, data de compilação ou status.
driverquery e sua relação com o PowerShell
O comando driverquery é muito flexível e permite Veja diferentes perspectivas do status do motorista.Por exemplo, se você quiser listar apenas os drivers assinados com mais detalhes, você pode executar:
driverquery /si
Este modo mostra Motoristas cadastrados com informações adicionais úteis para auditorias de segurança ou verificações de integridade. E você sempre pode consultar driverquery /? Para visualizar todos os parâmetros disponíveis e ajustar a saída às suas necessidades.
Uma das vantagens do driverquery é que Você pode integrá-lo ao PowerShell usando o ConvertFrom-CSV.Se você gerar a saída em formato CSV e redirecioná-la (pipe), obterá objetos que podem ser manipulados pelo PowerShell. Um exemplo clássico seria:
driverquery.exe /v /fo csv | ConvertFrom-CSV | Select-Object "Display Name", "Start Mode", "Paged Pool(bytes)", Path
Com isso você combina O poder do driverquery com manipulação de dados em PowerShellSelecionar apenas as colunas de seu interesse: nome de exibição, modo de inicialização, memória paginada e caminho do driver no disco. Isso é útil quando você deseja filtrar por tipos específicos, como drivers gráficos.
Deve-se notar que tanto o driverquery quanto certas consultas WMI padrão se concentram principalmente em motoristas cadastrados no sistema, muitos deles carregados no Bota ou gerenciados por meio do registro em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Alguns drivers que são injetados dinamicamente em tempo de execução podem não aparecer nessas listas.
Liste os drivers do PowerShell com Get-WindowsDriver
Para cenários mais avançados, especialmente ao trabalhar com Imagens offline do Windows (por exemplo, WIMs montados), o cmdlet é muito útil. Obter-WindowsDriver, que faz parte das ferramentas DISM acessíveis a partir do PowerShell.
Este cmdlet permite exibir informações sobre pacotes de drivers tanto para a instalação do Windows em execução quanto para uma imagem montada em uma pasta. A sintaxe principal é dividida em dois modos de uso principais: offline e online.
Para uma Imagem offline montada em uma pastaO formato geral seria:
Get-WindowsDriver -Path "C:\offline"
E para agir contra o sistema em execução, você usaria o parâmetro. -Conectados:
Get-WindowsDriver -Online
Sem parâmetros adicionais, Get-WindowsDriver Retorna a lista de drivers de terceiros presente na imagem. Se você adicionar o modificador -TudoVocê também verá que os drivers padrão já vêm incluídos por padrão no Windows.
Parâmetros principais do Get-WindowsDriver
Um dos parâmetros mais importantes é -Motoristao que permite especificar um arquivo .inf específico ou uma pasta de arquivos .inf Para obter informações detalhadas sobre esses drivers. Se você apontar para uma pasta, os arquivos .inf que não forem pacotes de driver válidos serão ignorados automaticamente.
Ao trabalhar com uma imagem offline, o parâmetro -Caminho Especifica o caminho raiz da imagem montada. Se a pasta do Windows não estiver exatamente nesse nível raiz, você pode usar -Diretório do Windows Para especificar a subpasta relativa onde está localizado.
Parâmetro -Unidade do Sistema É utilizado em cenários mais específicos, como quando se trabalha com o Windows PE e o gerenciador de inicialização está em uma partição diferente. Nesses casos, serve para especificar a unidade que contém os arquivos do BootMgr que devem ser servidos.
Com relação ao registro de atividades, o parâmetro -Caminho de Log Permite definir o caminho completo para o arquivo de log. Se não for alterado, o caminho padrão será utilizado. %WINDIR%\Logs\Dism\dism.logou, no Windows PE, o espaço temporário na RAM. Enquanto isso, -Nível de registro Determina o nível de detalhamento do registro, com valores que variam desde apenas erros até a inclusão de informações de depuração.
Finalmente, o parâmetro -Diretório Scratch Esta é a pasta temporária onde os arquivos são extraídos durante as operações de serviço. Deve ser um caminho local e, assim que a operação for concluída, o Arquivos temporários Eles são removidos automaticamente, não deixando resíduos.
Exemplos práticos com Get-WindowsDriver
Para visualizar rapidamente todos os drivers para sua instalação atual do Windows, você pode executar o seguinte comando:
Get-WindowsDriver -Online -All
Este comando mostrará todos os drivers (tanto do sistema quanto de terceiros) presente na imagem em execução. É uma maneira muito direta de ver quais pacotes estão instalados sem usar WMI ou o Gerenciador de Dispositivos.
Se você estiver trabalhando com um Imagem montada em C:\offline E se você quiser verificar apenas drivers de terceiros, pode fazer o seguinte:
Get-WindowsDriver -Path "C:\offline"
Se você deseja um relatório detalhado de um driver OEM específico dentro dessa imagem, basta especificar o arquivo .inf:
Get-WindowsDriver -Path "C:\offline" -Driver "OEM1.inf"
Você pode até mesmo acessar um arquivo .inf localizado em um caminho de driver específico, por exemplo:
Get-WindowsDriver -Path "C:\offline" -Driver "C:\drivers\Usb\Usb.inf"
Em todos esses casos, Get-WindowsDriver retorna objetos que você pode direcionar a saída para Select-Object, Where-Object ou Export-CSV para filtrar, classificar ou exportar as informações para o formato que melhor lhe convier.
PowerShell e SCCM: Get-CMDriver para catálogos de drivers
Ao gerenciar um ambiente corporativo com Gerenciador de configuração (SCCM)Você não está interessado apenas nos drivers de cada computador, mas também no catálogo centralizado de drivers que o SCCM mantém para a implantação de imagens e pacotes.
Nesse contexto, o cmdlet entra em ação. Obter-CMDriver, Isso funciona para Recuperar informações dos drivers de dispositivo gerenciados pelo Configuration Manager.Este cmdlet possui diversas assinaturas, dependendo do que você deseja consultar: por nome, por identificador numérico, por pacote de driver ou por categoria administrativa.
A sintaxe básica inclui variantes como:
Get-CMDriver
Get-CMDriver -DriverPackageId <String>
Get-CMDriver -DriverPackageName <String>
Get-CMDriver -Id <Int32>
Get-CMDriver -InputObject <IResultObject>
Com esses parâmetros, você pode direcionar suas consultas ao catálogo do SCCM, filtrando por Nome do driver, identificador, pacotes associados ou categorias administrativas que você definiu para organizar seus controladores.
Exemplos com Get-CMDriver
Se você souber o nome de um driver específico, por exemplo "Driver do Hub Serial do Surface", poderá obter seus detalhes com:
Get-CMDriver -Name "Surface Serial Hub Driver"
Quando você precisa verificar vários drivers que compartilham o mesmo prefixo no nome (como toda a família de drivers Surface) e deseja visualizar apenas algumas propriedades relevantes, você pode usar algo como:
Get-CMDriver -Fast -Name "Surface*" | Select-Object LocalizedDisplayName, DriverVersion, DriverDate
o modificador -Rápido Isso reduz a quantidade de informações recuperadas e acelera a consulta, o que é bastante perceptível em catálogos grandes. Em seguida, com Select-Object, Você só mantém as colunas que lhe são úteis. Para sua análise.
Se você gerencia categorias administrativas (por exemplo, uma categoria "Superfície" onde você agrupa todos esses controladores), você pode encadear a recuperação de categoria e driver desta forma:
$category = Get-CMCategory -Name "Surface"
Get-CMDriver -Fast -AdministrativeCategory $category
Nesse caso, primeiro você armazena a categoria em uma variável e depois pede ao cmdlet Get-CMDriver para retorná-la. todos os controladores associados a essa categoriaAlgo muito útil para manter visões lógicas de seus controladores no SCCM.
Limitações ao listar drivers carregados dinamicamente
Nem todos os drivers se comportam da mesma maneira. Existem ferramentas, como algumas que fazem parte do pacote. Sysinternals (por exemplo, Process Explorer ou handle.exe)que injetam dinamicamente drivers no kernel quando são executados, sem registrá-los como serviços tradicionais carregados na inicialização.
Um exemplo típico é o motorista. procexp152.sys (ou versões anteriores, como procexp113.sys), associadas ao Process Explorer. Esse tipo de driver pode não aparecer em consultas padrão de Get-WmiObject Win32_SystemDriveruma vez que essas consultas dependem de informações dos serviços de registro (CurrentControlSet\Services) e geralmente refletem principalmente os drivers que estão carregados com o sistema.
Do mesmo modo, O driverquery pode não listar todos os drivers injetados dinamicamente.Portanto, se você estiver depurando telas azuis da morte (BSODs) ou comportamentos anômalos causados por ferramentas de terceiros que carregam seus próprios drivers, talvez seja necessário recorrer a outros métodos.
Entre essas alternativas estão Reveja despejos de memória do kernel com ferramentas como o WinDbg, ou use utilitários como verificador.exeO verificador de drivers permite selecionar os drivers que você deseja monitorar e detectar comportamentos instáveis, mas a interface gráfica oferece mais opções de enumeração do que a versão de linha de comando, que se concentra em consultar e configurar a verificação.
Resumindo, para um inventário geral e para a maioria das necessidades administrativas, PowerShell, WMI e Get-WindowsDriver atendem muito bem às necessidades básicas.No entanto, em casos extremos de depuração de drivers carregados dinamicamente, será necessário complementar com ferramentas de análise do kernel.
Atualize os drivers com o PowerShell usando o PSWindowsUpdate.
Além de listar os drivers, muitos administradores usam o PowerShell para Automatize as atualizações de drivers por meio de Windows Update e também para atualizar drivers de somUm método comumente utilizado é através do módulo PSWindowsUpdate, que estende os cmdlets de atualização padrão.
O fluxo normal passa por Habilitar temporariamente a execução de scripts assinados.Instale o módulo e, em seguida, solicite as atualizações de driver diretamente dos servidores da Microsoft.
Um conjunto típico de comandos poderia ser:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Install-Module PSWindowsUpdate
Import-Module PSWindowsUpdate
Get-WindowsUpdate
Get-WindowsUpdate -MicrosoftUpdate -Category Driver -Install -AutoReboot
Essa sequência habilita a execução de scripts para a sessão atual, instala e importa o módulo PSWindowsUpdate. Você verifica quais atualizações estão disponíveis. Por fim, você solicita que eles sejam instalados a partir da categoria "Driver" via Microsoft Update, permitindo que o sistema reinicie automaticamente, se necessário.
Você também pode ampliar o escopo usando um comando que instala todas as atualizações detectadas pelo Microsoft Update e reinicia sem intervenção, por exemplo:
Get-WindowsUpdate -MicrosoftUpdate -Install -AutoReboot
Essa forma de trabalhar é especialmente prática em parques para grandes equipesÉ aqui que você deseja padronizar as versões dos drivers sem ter que fazer isso uma por uma. No entanto, é sempre recomendável combinar isso com um bom inventário prévio de drivers e, em ambientes críticos, testar em um grupo piloto antes de implementar em toda a organização.
Escritor apaixonado pelo mundo dos bytes e da tecnologia em geral. Adoro compartilhar meu conhecimento por meio da escrita, e é isso que farei neste blog, mostrar a vocês tudo o que há de mais interessante sobre gadgets, software, hardware, tendências tecnológicas e muito mais. Meu objetivo é ajudá-lo a navegar no mundo digital de uma forma simples e divertida.
