- PowerShell Ti consente di elencare, filtrare ed esportare autisti con cmdlet come Get-WmiObject e Get-WindowsDriver.
- driverquery, il Amministratore del dispositivo e SCCM (Get-CMDriver) completano l'inventario del controller.
- Alcuni driver caricati dinamicamente richiedono strumenti aggiuntivi come WinDbg o Verifier.
- Moduli come PSWindowsUpdate e utilità esterne semplificano l'aggiornamento e il mantenimento dei driver aggiornati.
Negli ambienti Windows, controllare quali driver sono installati e quale versione ha ciascuno È fondamentale per mantenere la stabilità del sistema, risolvere i problemi delle schermate blu o preparare le migrazioni. PowerShell è diventato uno strumento incredibilmente comodo per eseguire questo tipo di inventario senza dover passare attraverso Gestione dispositivi uno per uno.
Nelle righe seguenti vedrai Come elencare i controller da PowerShell in vari modi e come esportarli ai file per analizzarli con calma, quali differenze ci sono con gli altri comandi come DRIVERQUERY o strumenti grafici, e persino come gestire scenari più avanzati come immagini offline o driver caricati dinamicamente.
Che cos'è un driver e perché vorresti elencarlo da PowerShell?

In Windows, un controller o un driver è un piccolo blocco di software che funge da intermediario tra il sistema operativo e un componente di hardware (scheda grafica, chipset, immagazzinamentoperiferiche USBecc.). Sebbene il codice che occupano non sia enorme, il loro impatto sulla stabilità del sistema è gigantesco.
Quando un driver critico (ad esempio, archiviazione, rete, grafica o chipset) malfunzionamenti, possono causare arresti anomali, perdita di prestazioni e persino schermate blu (BSOD)Ecco perché avere un elenco chiaro dei driver installati e della loro versione è molto utile quando si eseguono il debug di bug o ci si prepara per un aggiornamento importante.
Prima di correre a cambiare, disinstallare o ripristinare i driver, è una buona idea minimizzare i rischi con un punto di ripristino del sistemaIn questo modo è possibile ripristinare la situazione se un aggiornamento del driver non va a buon fine e il computer inizia a comportarsi in modo strano o addirittura non si avvia correttamente.
Oltre al ristorante, è consigliabile eseguire il backup dei dati importanti (documenti, foto, progetti di lavoro, ecc.), soprattutto se si intende intervenire sui driver di archiviazione, poiché un errore potrebbe impedire al sistema di montare correttamente le unità o danneggiare le informazioni.
Comando di base in PowerShell per elencare i driver installati
Il modo più diretto per ottenere un inventario del controller da PowerShell è affidarsi a WMIUno dei comandi più comunemente usati è:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion
Con questo cmdlet, PowerShell interroga la classe WMI Win32_PnPSignedDriver e restituisce un elenco dei driver PnP firmati, insieme al nome del dispositivo e alla versione del driver attualmente associata al sistema.
Se desideri un po' più di contesto su ciascun driver, puoi aggiungere campi come nome descrittivo, data di pubblicazione o produttore. Ad esempio:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, Manufacturer, DriverVersion, DriverDate
Con questa consulenza otterrai Informazioni molto più complete per ogni voceCiò consente di rilevare versioni precedenti, produttori specifici o driver che non sono stati aggiornati da anni.
Come esportare l'elenco dei driver in un file (TXT o CSV)
In contesti reali, la semplice visualizzazione dell'elenco sullo schermo raramente è sufficiente. L'approccio più comodo è... salva il risultato in un file per analizzarlo in Excel, condividerlo con il team o conservarlo come un'istantanea dello stato del sistema prima di apportare modifiche, ad esempio, prima eliminare i vecchi driver.
Se hai bisogno solo di un rapido elenco di testo normale, puoi reindirizzare l'output a un file:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion > C:\drivers.txt
Quel comando crea un file C:\driver.txt Con un semplice elenco di dispositivi e versioni. Ideale per una rapida consultazione o per allegare i dati a un report senza troppi problemi.
Quando si cerca qualcosa di più gestibile per il filtraggio e l'ordinamento, l'opzione migliore è usare CSV e il cmdlet Export-CSVUn esempio molto comune sarebbe:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, DriverVersion, DriverDate | Export-CSV -Path "./MisDrivers.csv" -NoTypeInformation
Con questo comando, un file denominato I miei driver.csv che puoi aprire in Excel o in qualsiasi programma di fogli di calcolo per ordina per versione, filtra per data del driver, cerca produttori specifici, ecc.
Sebbene a volte si dica che PowerShell "non consente l'esportazione" dell'elenco dei driver, in realtà Sì, può essere esportato perfettamente. Utilizzando il reindirizzamento dell'output o Export-CSV, come hai appena visto. Puoi quindi copiare, incollare o lavorare con queste informazioni dove vuoi.
Filtra i driver per produttore, nome o testo specifico
Di solito, non è consigliabile visualizzare tutti i driver contemporaneamente, ma concentrarsi su un produttore o un tipo di dispositivo specifico. Per questo, è possibile concatenamento di filtri con Where-Object sulle proprietà di ciascun driver.
Ad esempio, se sei interessato a mantenere solo i driver per IntelPotresti fare qualcosa di semplice come:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion | Where-Object { $_.DeviceName -like "*Intel*" }
Questo comando scorre tutte le voci restituite da WMI e Mantiene solo quelli il cui nome dispositivo contiene la stringa "Intel"Utilizzando l'asterisco come carattere jolly è possibile cercare corrispondenze parziali in qualsiasi punto del testo.
La stessa idea può essere utilizzata per individuare i driver correlati a un'applicazione specifica o a un tipo di hardware, ad esempio per aggiornare i driver USBSe conosci parte del nome, il produttore o qualche schema del percorso, puoi adattare il filtro alla proprietà più confortevole in ogni caso.
Visualizza i driver da Gestione dispositivi e altri strumenti di Windows
Sebbene PowerShell sia molto potente per l'automazione e l'esportazione di elenchi, Windows offre ancora strumenti grafici classici per la gestione dei controller che dovrebbe essere noto e combinato con il percorso del comando.
Il primo punto di riferimento è il Amministratore del dispositivoÈ possibile accedervi cliccando con il tasto destro del mouse su "Questo PC" e scegliendo "Gestisci", oppure più rapidamente utilizzando il menu contestuale del pulsante Start (Windows + X). Verrà visualizzato un albero con tutte le categorie hardware installate sul sistema.
I dispositivi che presentano problemi di installazione o di funzionamento spesso si presentano con un'icona di avviso giallaFacendo doppio clic su uno di essi, si apre la finestra delle proprietà, dove è possibile controllare lo stato del dispositivo e accedere alla scheda "Driver".
All'interno di quella scheda troverai opzioni come "Dettagli driver", "Aggiorna driver", "Ripristina driver", "Disabilita" o "Disinstalla"Queste azioni consentono di visualizzare i file del driver, cercare nuove versioni, ripristinare una versione precedente, disattivare il dispositivo senza rimuoverlo o rimuovere completamente il driver dal sistema.
Oltre a questi strumenti, Windows include il comando DRIVERQUERY da usare dal simbolo del sistema (CMD). Corsa driverquery Otterrai un elenco di tutti i driver installati e con driverquery /v Vedrai informazioni più dettagliate, come l'utilizzo della memoria, la data di build o lo stato.
driverquery e la sua relazione con PowerShell
Il comando driverquery è molto flessibile e consente Visualizza diverse visualizzazioni dello stato del conducenteAd esempio, se si desidera elencare in modo più dettagliato solo i driver firmati, è possibile eseguire:
driverquery /si
Questa modalità mostra driver firmati con informazioni utili aggiuntive per audit di sicurezza o controlli di integrità. E puoi sempre consultare driverquery /? per visualizzare tutti i parametri disponibili e adattare l'output alle tue esigenze.
Uno dei vantaggi di driverquery è che Puoi integrarlo con PowerShell utilizzando ConvertFrom-CSVSe si genera l'output in formato CSV e lo si inoltra tramite pipe, si ottengono oggetti manipolabili da PowerShell. Un esempio classico sarebbe:
driverquery.exe /v /fo csv | ConvertFrom-CSV | Select-Object "Display Name", "Start Mode", "Paged Pool(bytes)", Path
Con questo si combina La potenza di driverquery con la manipolazione dei dati di PowerShellSelezionando solo le colonne di tuo interesse: nome visualizzato, modalità di avvio, memoria paginata e percorso del driver su disco. Questa opzione è utile quando si desidera filtrare per tipi specifici, ad esempio driver grafici.
Va notato che sia driverquery che alcune query WMI standard si concentrano principalmente su conducenti registrati nel sistema, molti di loro caricati nel Boot o gestiti tramite il registro in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Alcuni driver iniettati dinamicamente in fase di esecuzione potrebbero non comparire in questi elenchi.
Elenca i driver da PowerShell con Get-WindowsDriver
Per scenari più avanzati, soprattutto quando si lavora con Immagini offline di Windows (ad esempio, WIM montati), il cmdlet è molto utile Ottieni-WindowsDriver, che fa parte degli strumenti DISM accessibili da PowerShell.
Questo cmdlet consente di visualizzare informazioni sui pacchetti driver sia per l'installazione di Windows in esecuzione sia per un'immagine montata in una cartella. La sintassi principale è suddivisa in due modalità di utilizzo principali: offline e online.
Per una immagine offline montata in una cartellaLa forma generale sarebbe:
Get-WindowsDriver -Path "C:\offline"
E per lavorare contro il sistema in esecuzione, dovresti usare il parametro -Online:
Get-WindowsDriver -Online
Senza parametri aggiuntivi, Get-WindowsDriver restituisce l'elenco dei driver di terze parti presente nell'immagine. Se aggiungi il modificatore -TuttiVedrai anche i driver predefiniti inclusi di default in Windows.
Parametri chiave di Get-WindowsDriver
Uno dei parametri più importanti è -Autistache consente di specificare un file .inf specifico o una cartella di file .inf Per ottenere informazioni dettagliate su tali driver. Se si punta a una cartella, i file .inf che non sono pacchetti driver validi vengono automaticamente ignorati.
Quando si lavora con un'immagine offline, il parametro -Il percorso specifica il percorso radice dell'immagine montata. Se la cartella Windows non si trova esattamente a quel livello radice, è possibile utilizzare -Directory di Windows per specificare la sottocartella relativa in cui si trova.
Parametro -SystemDrive Viene utilizzato in scenari più specifici, ad esempio quando si lavora da Windows PE e il boot manager si trova su una partizione diversa. In questi casi, serve a specificare l'unità contenente i file BootMgr da gestire.
Per quanto riguarda il registro delle attività, il parametro -LogPath Permette di definire il percorso completo del file di registro. Se non si modifica il percorso, verrà utilizzato il percorso predefinito. %WINDIR%\Logs\Dism\dism.logo in Windows PE, lo spazio di lavoro nella RAM. Nel frattempo, -Livello di registro determina il livello di dettaglio del registro, con valori che vanno dai soli errori all'inclusione di informazioni di debug.
Infine, il parametro -Directory di Scratch Questa è la cartella temporanea in cui vengono estratti i file durante le operazioni di servizio. Deve essere un percorso locale e, una volta completata l'operazione, il File temporanei Vengono rimossi automaticamente senza lasciare residui.
Esempi pratici con Get-WindowsDriver
Per visualizzare rapidamente tutti i driver per l'installazione corrente di Windows, puoi eseguire:
Get-WindowsDriver -Online -All
Questo comando mostrerà tutti i driver (sia di sistema che di terze parti) presente nell'immagine in esecuzione. È un modo molto diretto per vedere quali pacchetti sono installati senza usare WMI o Gestione dispositivi.
Se stai lavorando con un immagine montata in C:\offline Se invece vuoi controllare solo i driver di terze parti, puoi procedere come segue:
Get-WindowsDriver -Path "C:\offline"
Se desideri un report dettagliato di uno specifico driver OEM all'interno di quell'immagine, specifica semplicemente il file .inf:
Get-WindowsDriver -Path "C:\offline" -Driver "OEM1.inf"
È anche possibile indirizzare un file .inf situato in un percorso driver specifico, ad esempio:
Get-WindowsDriver -Path "C:\offline" -Driver "C:\drivers\Usb\Usb.inf"
In tutti questi casi, Get-WindowsDriver restituisce oggetti che puoi indirizzare a Seleziona-Oggetto, Dove-Oggetto o Esporta-CSV per filtrare, ordinare o esportare le informazioni nel formato più adatto a te.
PowerShell e SCCM: Get-CMDriver per i cataloghi dei driver
Quando gestisci un ambiente aziendale con Gestore della configurazione (SCCM)Non ti interessano solo i driver presenti su ciascun computer, ma anche il catalogo centralizzato dei driver che SCCM gestisce per distribuire immagini e pacchetti.
In questo contesto entra in gioco il cmdlet. Ottieni-CMDriver, che serve a Recupera informazioni dai driver di dispositivo gestiti da Configuration ManagerQuesto cmdlet ha diverse firme a seconda di cosa si desidera interrogare: per nome, per identificatore numerico, per pacchetto driver o per categoria amministrativa.
La sintassi di base include varianti come:
Get-CMDriver
Get-CMDriver -DriverPackageId <String>
Get-CMDriver -DriverPackageName <String>
Get-CMDriver -Id <Int32>
Get-CMDriver -InputObject <IResultObject>
Con questi parametri puoi indirizzare le tue query al catalogo SCCM, filtrando per nome del driver, identificatore, pacchetti associati o categorie amministrative che hai definito per organizzare i tuoi controller.
Esempi con Get-CMDriver
Se si conosce il nome di un driver specifico, ad esempio "Surface Serial Hub Driver", è possibile ottenerne i dettagli con:
Get-CMDriver -Name "Surface Serial Hub Driver"
Quando devi controllare diversi driver che condividono lo stesso prefisso nel nome (come l'intera famiglia di driver Surface) e vuoi vedere solo alcune proprietà rilevanti, puoi usare qualcosa come:
Get-CMDriver -Fast -Name "Surface*" | Select-Object LocalizedDisplayName, DriverVersion, DriverDate
Il modificatore -Veloce Riduce la quantità di informazioni recuperate e velocizza la query, il che è piuttosto evidente nei cataloghi di grandi dimensioni. Quindi, con Select-Object, Mantieni solo le colonne che ti sono utili per la tua analisi.
Se gestisci categorie amministrative (ad esempio, una categoria "Superficie" in cui raggruppi tutti i controller), puoi concatenare il recupero di categorie e driver in questo modo:
$category = Get-CMCategory -Name "Surface"
Get-CMDriver -Fast -AdministrativeCategory $category
In questo caso, prima memorizzi la categoria in una variabile e poi chiedi a Get-CMDriver di restituirtela tutti i controllori associati a quella categoria, qualcosa di molto utile per mantenere le visualizzazioni logiche dei controller in SCCM.
Limitazioni nell'elencazione dei driver caricati dinamicamente
Non tutti i conducenti si comportano allo stesso modo. Esistono strumenti, come alcuni presenti nella suite. Sysinternals (ad esempio, Process Explorer o handle.exe)che iniettano dinamicamente i driver nel kernel quando vengono eseguiti, senza registrarli come servizi tradizionali caricati all'avvio.
Un esempio tipico è l'autista procexp152.sys (o versioni precedenti come procexp113.sys), associato a Process Explorer. Questo tipo di driver potrebbe non apparire nelle query standard di Get-WmiObject Win32_SystemDriverpoiché queste query si basano sulle informazioni dei servizi del registro (CurrentControlSet\Services) e solitamente riflettono principalmente i driver caricati con il sistema.
Analogamente, driverquery potrebbe non elencare tutti i driver iniettati dinamicamenteQuindi, se stai eseguendo il debug di BSOD o di comportamenti anomali causati da strumenti di terze parti che caricano i propri driver, potresti dover ricorrere ad altri metodi.
Tra queste alternative ci sono esaminare dump della memoria kernel con strumenti come WinDbg, oppure utilizzare utilità come verificatore.exeIl verificatore di driver consente di selezionare i driver che si desidera monitorare e di rilevare comportamenti instabili, ma l'interfaccia grafica offre più opzioni di enumerazione rispetto alla versione da riga di comando, che si concentra sull'interrogazione e sulla configurazione della verifica.
In breve, per un inventario generale e per la maggior parte delle esigenze amministrative, PowerShell, WMI e Get-WindowsDriver coprono molto bene le basi.Tuttavia, nei casi estremi di debug dei driver caricati a caldo, sarà necessario integrare con strumenti di analisi del kernel.
Aggiorna i driver con PowerShell utilizzando PSWindowsUpdate
Oltre a elencare i driver, molti amministratori utilizzano PowerShell per automatizzare gli aggiornamenti dei driver tramite Windows Update e anche per aggiornare i driver audioUn metodo comunemente utilizzato è tramite il modulo PSWindowsUpdate, che estende i cmdlet di aggiornamento standard.
Il flusso usuale passa attraverso abilitare temporaneamente l'esecuzione di script firmatiInstalla il modulo e poi richiedi gli aggiornamenti dei driver direttamente dai server Microsoft.
Un tipico set di comandi potrebbe essere:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Install-Module PSWindowsUpdate
Import-Module PSWindowsUpdate
Get-WindowsUpdate
Get-WindowsUpdate -MicrosoftUpdate -Category Driver -Install -AutoReboot
Questa sequenza abilita l'esecuzione dello script per la sessione corrente, installa e importa il modulo PSWindowsUpdate, Controlli quali aggiornamenti sono disponibili. Infine, si richiede che vengano installati dalla categoria "Driver" tramite Microsoft Update, consentendo al sistema di riavviarsi automaticamente se necessario.
È anche possibile ampliare l'ambito utilizzando un comando che installa tutti gli aggiornamenti rilevati da Microsoft Update e riavvia il sistema senza alcun intervento, ad esempio:
Get-WindowsUpdate -MicrosoftUpdate -Install -AutoReboot
Questo modo di lavorare è particolarmente pratico in grandi parchi di squadraIn questo caso, è opportuno standardizzare le versioni dei driver senza procedere singolarmente. Tuttavia, è sempre consigliabile combinare questa operazione con un buon inventario preventivo dei driver e, in ambienti critici, testare in un gruppo pilota prima di distribuirli all'intera organizzazione.
Scrittore appassionato del mondo dei byte e della tecnologia in generale. Adoro condividere le mie conoscenze attraverso la scrittura, ed è quello che farò in questo blog, mostrarti tutte le cose più interessanti su gadget, software, hardware, tendenze tecnologiche e altro ancora. Il mio obiettivo è aiutarti a navigare nel mondo digitale in modo semplice e divertente.
