Com llistar i gestionar drivers des de PowerShell a Windows

Darrera actualització: 04/12/2025
Autor: Isaac
  • PowerShell permet llistar, filtrar i exportar conductors amb cmdlets com Get-WmiObject i Get-WindowsDriver.
  • driverquery, el Administrador de dispositius i SCCM (Get-CMDriver) complementen l'inventari de controladors.
  • Alguns drivers carregats dinàmicament requereixen eines addicionals com WinDbg o Verifier.
  • Mòduls com PSWindowsUpdate i utilitats externes faciliten actualitzar i mantenir els drivers al dia.

Llistar drivers des de PowerShell

En entorns Windows, controlar quins drivers hi ha instal·lats i quina versió té cadascun és clau per mantenir l'estabilitat del sistema, solucionar pantalles blaves o preparar migracions. PowerShell ha esdevingut una eina comodíssima per fer aquest tipus d'inventari sense haver d'anar un per un per l'Administrador de dispositius.

A les següents línies veuràs com llistar controladors des de PowerShell de diverses maneres, com exportar-los a arxius per analitzar-los amb calma, quines diferències hi ha amb altres ordres com a consulta de controladors o eines gràfiques, i fins i tot com manejar escenaris més avançats com imatges offline o drivers carregats dinàmicament.

Què és un driver i per què t'interessa llistar-lo des de PowerShell

Controladors de dispositiu a Windows

A Windows, un controlador o driver és un petit bloc de programari que fa d'intermediari entre el sistema operatiu i un component de maquinari (targeta gràfica, chipset, emmagatzematge, perifèrics USB, etc.). Tot i que el codi que ocupen no és enorme, el seu impacte a l'estabilitat del sistema és gegantí.

Quan un driver crític (per exemple, emmagatzematge, xarxa, gràfica o chipset) funciona malament, pot provocar bloquejos, pèrdua de rendiment i fins i tot pantalles blaves (BSOD). Per això tenir una llista clara dels controladors instal·lats i la seva versió és tan útil quan estàs depurant errors o preparant una actualització important.

Abans de llançar-te a canviar, desinstal·lar o revertir controladors, és bona idea minimitzar riscos amb un punt de restauració del sistema. Així podràs tornar enrere si una actualització de driver surt granota i lequip comença a comportar-se de forma estranya o ni tan sols arrenca correctament.

A més del punt de restauració, convé donar suport a les dades importants (documents, fotos, projectes de treball, etc.), especialment si tocareu drivers d'emmagatzematge, ja que un error pot fer que el sistema no munti correctament les unitats o corrompi informació.

Ordre bàsica a PowerShell per llistar drivers instal·lats

La manera més directa d'obtenir un inventari de controladors des de PowerShell és recolzar-se a WMI. Un dels comandaments més usats és:

Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion

Amb aquest cmdlet, PowerShell consulta la classe WMI Win32_PnPSignedDriver i torna un llistat dels drivers PnP signats, juntament amb el nom del dispositiu i la versió del controlador que té associat en aquest moment el sistema.

Si vols una mica més de context sobre cada driver, pots afegir camps com el nom amigable, la data de publicació o el fabricant. Per exemple:

Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, Manufacturer, DriverVersion, DriverDate

Amb aquesta consulta, obtindràs informació molt més completa per a cada entrada, el que et permet detectar versions antigues, fabricants concrets o drivers que fa anys que no s'actualitzen.

Com exportar la llista de drivers a un fitxer (TXT o CSV)

En entorns reals, poques vegades només cal veure la llista per pantalla. El més còmode és bolcar el resultat a un fitxer per analitzar-lo a Excel, compartir-lo amb l'equip o conservar-lo com a foto fixa de l'estat del sistema abans de canviar res, per exemple abans de esborrar controladors antics.

Si només necessites una llista ràpida en text pla, pots redirigir la sortida a un fitxer:

Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion > C:\drivers.txt

Aquesta ordre crea un fitxer C:\drivers.txt amb un llistat simple de dispositiu i versió. Ideal per a consultes ràpides o per adjuntar a un informe sense complicar-te gaire.

Quan busques una mica més manejable per filtrar i ordenar, el seu és fer servir CSV i el cmdlet Export-CSV. Un exemple molt habitual seria:

Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, DriverVersion, DriverDate | Export-CSV -Path "./MisDrivers.csv" -NoTypeInformation

Amb aquesta ordre, al directori actual apareixerà un fitxer anomenat MisDrivers.csv que podràs obrir a Excel oa qualsevol full de càlcul per ordenar per versió, filtrar per data de driver, cercar fabricants concrets, Etc

Tot i que de vegades es llegeix que PowerShell «no permet exportar» la llista de drivers, en realitat sí que es pot exportar perfectament usant redirecció de sortida o Export-CSV, com acabes de veure. Després pots copiar, enganxar o treballar amb aquesta informació on vulguis.

  25 increïbles eines per extreure arxius dàudio dels vídeos

Filtrar drivers per fabricant, nom o text concret

El més normal és que no vulguis veure tots els controladors alhora, sinó centrar-te en un fabricant o tipus de dispositiu concret. Per això, pots encadenar filtres amb Where-Object sobre les propietats de cada driver.

Per exemple, si t'interessa quedar-te només amb els controladors de Intel, podries fer alguna cosa tan senzilla com:

Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion | Where-Object { $_.DeviceName -like "*Intel*" }

Aquesta comanda recorre totes les entrades tornades per WMI i manté únicament aquelles el nom de dispositiu de les quals conté la cadena «Intel». L'ús de l'asterisc com a comodí et permet cercar coincidències parcials a qualsevol part del text.

La mateixa idea serveix per localitzar drivers relacionats amb una aplicació concreta o un tipus de maquinari, per exemple per actualitzar els controladors USB. Si coneixes part del nom, el fabricant o algun patró de la ruta, pots adaptar el filtre a la propietat més còmoda en cada cas.

Veure controladors des de l'Administrador de dispositius i altres eines de Windows

Tot i que PowerShell és molt potent per automatitzar i exportar llistats, Windows continua oferint eines gràfiques clàssiques per gestionar controladors que convé conèixer i combinar amb la via de comandes.

El primer referent és el Administrador de dispositius, accessible fent clic dret a «Aquest equip» i escollint «Administrar», o més ràpid amb el menú contextual del botó d'inici (Windows + X). Aquí veuràs un arbre amb totes les categories de maquinari instal·lades al sistema.

Els dispositius que tenen problemes d'instal·lació o funcionament solen aparèixer amb una icona d'advertència groga. Si feu doble clic sobre qualsevol d'ells, s'obre la finestra de propietats, on podeu comprovar l'estat del dispositiu i accedir a la pestanya «Controlador».

Dins aquesta pestanya trobaràs opcions com «Detalls del controlador», «Actualitzar controlador», «Revertir el controlador», «Desactivar» o «Desinstal·lar». Aquestes accions permeten, respectivament, veure els fitxers del driver, cercar versions noves, tornar a una versió anterior, desactivar el dispositiu sense treure'l o eliminar completament el controlador del sistema.

A més d'aquestes eines, Windows inclou l'ordre consulta de controladors per utilitzar des del símbol de sistema (CMD). Executant driverquery obtindràs un llistat amb tots els controladors instal·lats, i amb driverquery /v veureu informació més detallada, com consum de memòria, data de compilació o estat.

driverquery i la seva relació amb PowerShell

La comanda driverquery és molt flexible i permet veure diverses vistes de l'estat dels drivers. Per exemple, si voleu llistar només controladors signats amb més detall, podeu llançar:

driverquery /si

Aquest mode mostra drivers signats amb informació addicional útil auditories de seguretat o comprovacions d'integritat. I sempre pots consultar driverquery /? per veure tots els paràmetres disponibles i ajustar la sortida a les vostres necessitats.

Un dels avantatges de driverquery és que pots integrar-lo amb PowerShell aprofitant ConvertFrom-CSV. Si generes la sortida en format CSV i la passes per la canonada, obtindràs objectes manipulables des de PowerShell. Un exemple clàssic seria:

driverquery.exe /v /fo csv | ConvertFrom-CSV | Select-Object "Display Name", "Start Mode", "Paged Pool(bytes)", Path

Amb això combines la potència de driverquery amb la manipulació de dades de PowerShell, seleccionant només les columnes que us interessen: nom de visualització, mode d'inici, memòria paginada i ruta del driver en disc. Resulta útil quan vols filtrar per tipus concrets, com ara drivers gràfics.

Cal tenir en compte que tant driverquery com certes consultes WMI estàndard se centren principalment en drivers registrats al sistema, molts d'ells carregats al arrencada o gestionats a través del registre a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Alguns controladors que s'injecten dinàmicament en temps d'execució poden no aparèixer en aquestes llistes.

Llistar drivers des de PowerShell amb Get-WindowsDriver

Per a escenaris més avançats, especialment quan treballes amb imatges offline de Windows (WIM muntades, per exemple), resulta molt útil el cmdlet Get-WindowsDriver, que forma part de les eines DISM accessibles des de PowerShell.

Aquest cmdlet us permet mostrar informació sobre els paquets de drivers tant de la instal·lació de Windows que està en execució com d'una imatge muntada en una carpeta. La sintaxi principal es divideix en dos grans maneres d'ús: offline i online.

  Com eliminar fitxers en ús a Windows pas a pas

Per a una imatge offline muntada en una carpeta, la forma general seria:

Get-WindowsDriver -Path "C:\offline"

I per treballar contra el sistema que està en execució, faries servir el paràmetre -En línia:

Get-WindowsDriver -Online

Sense paràmetres addicionals, Get-WindowsDriver torna la llista de drivers de tercers presents a la imatge. Si afegeixes el modificador -Tots, veuràs també controladors predeterminats inclosos de sèrie a Windows.

Paràmetres clau de Get-WindowsDriver

Un dels paràmetres més importants és -Conductor, que et permet especificar un fitxer .inf concret o una carpeta de .inf per obtenir dades detallades dels controladors. Si apunteu a una carpeta, els .inf que no siguin paquets de driver vàlids s'ignoren automàticament.

Quan estàs treballant amb una imatge offline, el paràmetre -Camí indica la ruta arrel de la imatge muntada. Si la carpeta Windows no està just en aquest nivell arrel, podeu fer servir -WindowsDirectory per especificar la subcarpeta relativa on es troba.

el paràmetre -SystemDrive s'utilitza en escenaris més específics, com quan treballes des del Windows PE i el carregador està en una partició diferent. En aquests casos, serveix per assenyalar la unitat que conté els fitxers de BootMgr que s'han de servir.

Pel que fa al registre d'activitat, el paràmetre -LogPath et deixa definir la ruta completa del fitxer de log. Si no ho ajustes, es fa servir per defecte %WINDIR%\Logs\Dism\dism.log, o en Windows PE lespai de scratch en RAM. Per la seva banda, -LogLevel determina la verbositat del registre, amb valors que van des de només errors fins a incloure informació de depuració.

Finalment, el paràmetre -ScratchDirectory és la carpeta temporal on s'extreuen fitxers durant les operacions de servei. Ha de ser una ruta local i, un cop acabada l'operació, els arxius temporals s'eliminen automàticament per no deixar residus.

Exemples pràctics amb Get-WindowsDriver

Per veure ràpidament tots els drivers de la instal·lació de Windows que tens ara mateix en marxa, pots executar:

Get-WindowsDriver -Online -All

Aquesta ordre mostrarà tots els controladors (tant del sistema com de tercers) presents a la imatge en execució. És una manera molt directa de veure quins paquets hi ha instal·lats sense utilitzar WMI ni l'Administrador de dispositius.

Si estàs treballant amb una imatge muntada a C:\offline i vols revisar només els drivers de tercers, podries fer:

Get-WindowsDriver -Path "C:\offline"

En cas de voler un informe detallat d'un controlador OEM concret dins d'aquesta imatge, n'hi hauria prou amb indicar el fitxer .inf:

Get-WindowsDriver -Path "C:\offline" -Driver "OEM1.inf"

Fins i tot pots adreçar-te a un fitxer .inf localitzat en una ruta específica de controladors, per exemple:

Get-WindowsDriver -Path "C:\offline" -Driver "C:\drivers\Usb\Usb.inf"

En tots aquests casos, Get-WindowsDriver torna objectes que pots canalitzar a Select-Object, Where-Object o Export-CSV per filtrar, ordenar o exportar la informació al format que millor t'encaixi.

PowerShell i SCCM: Get-CMDriver per a catàlegs de controladors

Quan gestiones un entorn corporatiu amb Configuration Manager (SCCM), no només t'interessen els drivers que hi ha a cada equip, sinó també el catàleg centralitzat de controladors que SCCM manté per desplegar imatges i paquets.

En aquest context, entra en joc el cmdlet Get-CMDriver, Que serveix per recuperar informació de controladors de dispositiu gestionats per Configuration Manager. Aquest cmdlet té diverses signatures segons el que vulguis consultar: per nom, per identificador numèric, per paquet de drivers o per categoria administrativa.

La sintaxi bàsica inclou variants com:

Get-CMDriver

Get-CMDriver -DriverPackageId <String>

Get-CMDriver -DriverPackageName <String>

Get-CMDriver -Id <Int32>

Get-CMDriver -InputObject <IResultObject>

Amb aquests paràmetres pots orientar les teves consultes al catàleg de SCCM, filtrant per nom de driver, identificador, paquets associats o categories administratives que hagis definit per organitzar els controladors.

Exemples amb Get-CMDriver

Si coneixeu el nom d'un driver concret, per exemple Surface Serial Hub Driver, podeu obtenir-ne els detalls amb:

Get-CMDriver -Name "Surface Serial Hub Driver"

Quan necessites revisar diversos drivers que comparteixen un mateix prefix en el nom (com tota la família de controladors Surface) i vols veure només algunes propietats rellevants, pots fer servir alguna cosa com:

  Obtain Failed – Inadequate Permissions Error in Chrome

Get-CMDriver -Fast -Name "Surface*" | Select-Object LocalizedDisplayName, DriverVersion, DriverDate

El modificador -Fast redueix la quantitat d'informació recuperada i accelera la consulta, cosa que es nota força en catàlegs grans. Després, amb Select-Object, et quedes únicament amb les columnes que et resulten útils per a la teva anàlisi.

Si gestioneu categories administratives (per exemple, una categoria «Surface» on agrupeu tots aquests controladors), podeu encadenar obtenció de categories i drivers d'aquesta manera:

$category = Get-CMCategory -Name "Surface"
Get-CMDriver -Fast -AdministrativeCategory $category

En aquest cas, primer guardes la categoria en una variable i després demanes a Get-CMDriver que et torni tots els controladors associats a aquesta categoria, una cosa molt útil per mantenir vistes lògiques dels teus controladors a SCCM.

Limitacions en llistar drivers carregats dinàmicament

No tots els controladors es comporten igual. Hi ha eines, com algunes de la suite Sysinternals (per exemple, Process Explorer o handle.exe), que injecten drivers de forma dinàmica al kernel quan s'executen, sense registrar-los com a serveis tradicionals carregats a l'arrencada.

Un cas típic és el driver procexp152.sys (o versions anteriors com procexp113.sys), associat a Process Explorer. Aquest tipus de drivers pot no aparèixer a consultes estàndard de Get-WmiObject Win32_SystemDriver, ja que aquestes consultes es recolzen en la informació de serveis del registre (CurrentControlSet\Services) i solen reflectir sobretot drivers que es carreguen amb el sistema.

De la mateixa manera, driverquery pot no llistar tots els controladors injectats dinàmicament, de manera que si estàs depurant BSOD o comportaments anòmals provocats per tools de tercers que carreguen els seus propis drivers, potser hagis de recórrer a altres vies.

Entre aquestes alternatives es troben Examinar bolcats de memòria de l'nucli amb eines com WinDbg, o utilitzar utilitats com verifier.exe. El verificador de controladors permet seleccionar drivers que voleu monitoritzar i detectar comportaments inestables, però la interfície gràfica ofereix més opcions d'enumeració que la versió de línia d'ordres, que se centra a consultar i configurar verificació.

En definitiva, per a un inventari general i per a la majoria de necessitats d'administració, PowerShell, WMI i Get-WindowsDriver cobreixen molt bé l'expedient, però en casos extrems de depuració de drivers carregats en calent hauràs de complementar amb eines danàlisi de kernel.

Actualitzar drivers amb PowerShell usant PSWindowsUpdate

A més de llistar controladors, molts administradors aprofiten PowerShell per automatitzar l'actualització de drivers via Windows Update i també per actualitzar controladors de so. Una forma força utilitzada és a través del mòdul PSWindowsUpdate, que amplia els cmdlets estàndard d'actualització.

El flux habitual passa per habilitar temporalment l'execució de scripts signats, instal·lar el mòdul i després demanar actualitzacions de drivers directament als servidors de Microsoft.

Un conjunt de comandes típic podria ser:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Install-Module PSWindowsUpdate
Import-Module PSWindowsUpdate
Get-WindowsUpdate
Get-WindowsUpdate -MicrosoftUpdate -Category Driver -Install -AutoReboot

Amb aquesta seqüència habiliteu l'execució d'scripts per a la sessió actual, instal·leu i importeu el mòdul PSWindowsUpdate, comproves quines actualitzacions hi ha disponibles i, finalment, demanes que s'instal·lin de la categoria Driver des de Microsoft Update, permetent que el sistema es reiniciï automàticament si cal.

També pots ampliar l'abast usant una ordre que instal·li totes les actualitzacions detectades des de Microsoft Update i reinicieu sense intervenció, per exemple:

Get-WindowsUpdate -MicrosoftUpdate -Install -AutoReboot

Aquesta forma de treballar és especialment pràctica en parcs grans d'equips, on vols homogeneïtzar versions de drivers sense anar un per un. Això sí, sempre cal combinar-la amb un bon inventari previ de controladors i, en entorns crítics, provar en un grup pilot abans de desplegar tota l'organització.

perifèrics windows, problemes amb drivers
Article relacionat:
Guia completa per eliminar dispositius fantasma i controladors orfes a Windows