- PowerShell Vă permite să listați, să filtrați și să exportați drivere cu cmdlet-uri precum Get-WmiObject și Get-WindowsDriver.
- interogare driver, the Manager dispozitive și SCCM (Get-CMDriver) completează inventarul de controlere.
- Unele drivere încărcate dinamic necesită instrumente suplimentare, cum ar fi WinDbg sau Verifier.
- Module precum PSWindowsUpdate și utilitare externe facilitează actualizarea și menținerea driverelor la zi.
În mediile Windows, controlează ce drivere sunt instalate și ce versiune are fiecare Este esențial pentru menținerea stabilității sistemului, depanarea ecranelor albastre sau pregătirea migrărilor. PowerShell a devenit un instrument incredibil de convenabil pentru efectuarea acestui tip de inventar fără a fi nevoie să parcurgeți Device Manager unul câte unul.
În rândurile următoare veți vedea Cum se listează controlerele din PowerShell în diverse moduri și cum se exportă la fișiere pentru a le analiza cu calm, ce diferențe există față de alții comenzi ca driverquery sau instrumente grafice și chiar cum să gestionezi scenarii mai avansate, cum ar fi imagini offline sau drivere încărcate dinamic.
Ce este un driver și de ce ați dori să îl listați din PowerShell?

În Windows, un controler sau driver este un mic bloc de software care acționează ca intermediar între sistemul de operare și o componentă a acestuia. hardware (placă grafică, chipset, depozitareperiferice USBetc.). Deși suprafața de cod pe care o ocupă nu este enormă, impactul lor asupra stabilității sistemului este gigantic.
Când un șofer critic (de exemplu, stocare, rețea, grafică sau chipset) defecțiuni, pot provoca accidente, pierderi de performanță și chiar ecrane albastre (BSOD)De aceea, o listă clară a driverelor instalate și a versiunii acestora este atât de utilă atunci când depanați erori sau vă pregătiți pentru o actualizare majoră.
Înainte de a vă grăbi să schimbați, să dezinstalați sau să reveniți la versiuni anterioare ale driverelor, este o idee bună minimizează riscurile cu un punct de restaurare a sistemuluiÎn acest fel, puteți reveni la starea inițială dacă o actualizare a driverului merge prost și computerul începe să se comporte ciudat sau nici măcar nu pornește corect.
Pe lângă restaurant, este recomandabil copie de rezervă a datelor importante (documente, fotografii, proiecte de lucru etc.), mai ales dacă intenționați să atingeți driverele de stocare, deoarece o greșeală poate face ca sistemul să nu monteze corect unitățile sau să corupă informațiile.
Comandă de bază în PowerShell pentru listarea driverelor instalate
Cea mai directă modalitate de a obține un inventar de controlere din PowerShell este se bazează pe WMIUna dintre cele mai frecvent utilizate comenzi este:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion
Cu acest cmdlet, PowerShell interoghează clasa WMI Win32_PnPSignedDriver și returnează o listă a driverelor PnP semnate, împreună cu numele dispozitivului și versiunea de driver pe care sistemul o are asociată în prezent.
Dacă doriți mai mult context despre fiecare driver, puteți adăuga câmpuri precum nume prietenos, data publicării sau producător. De exemplu:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, Manufacturer, DriverVersion, DriverDate
Cu această consultație, veți obține Informații mult mai complete pentru fiecare intrareAcest lucru vă permite să detectați versiuni mai vechi, anumiți producători sau drivere care nu au fost actualizate de ani de zile.
Cum se exportă lista de drivere într-un fișier (TXT sau CSV)
În situații reale, simpla vizualizare a listei pe ecran este rareori suficientă. Cea mai convenabilă abordare este... salvați rezultatul într-un fișier să îl analizați în Excel, să îl partajați cu echipa sau să îl păstrați ca o instantanee a stării sistemului înainte de a face modificări, de exemplu, înainte ștergeți driverele vechi.
Dacă aveți nevoie doar de o listă rapidă în text simplu, puteți redirecționa rezultatul către un fișier:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion > C:\drivers.txt
Comanda respectivă creează un fișier C:\drivers.txt cu o listă simplă de dispozitive și versiuni. Ideal pentru referințe rapide sau pentru atașarea la un raport fără prea mult efort.
Când căutați ceva mai ușor de gestionat pentru filtrare și sortare, cea mai bună opțiune este să utilizați CSV și cmdletul Export-CSVUn exemplu foarte comun ar fi:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, DriverVersion, DriverDate | Export-CSV -Path "./MisDrivers.csv" -NoTypeInformation
Cu această comandă, un fișier numit DrivereleMele.csv pe care îl puteți deschide în Excel sau în orice program de calcul tabelar sortare după versiune, filtrare după data driverului, căutare după producători specifici, Etc
Deși se spune uneori că PowerShell „nu permite exportul” listei de drivere, în realitate Da, poate fi exportat perfect. Folosind redirecționarea ieșirii sau Export-CSV, așa cum tocmai ați văzut. Apoi puteți copia, lipi sau lucra cu acele informații oriunde doriți.
Filtrarea driverelor după producător, nume sau text specific
În mod normal, nu veți dori să vedeți toți driverele simultan, ci mai degrabă să vă concentrați pe un anumit producător sau tip de dispozitiv. Pentru aceasta, puteți înlănțuirea filtrelor cu Where-Object despre proprietățile fiecărui driver.
De exemplu, dacă sunteți interesat să păstrați doar driverele pentru IntelAi putea face ceva atât de simplu precum:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion | Where-Object { $_.DeviceName -like "*Intel*" }
Această comandă iterează prin toate intrările returnate de WMI și Păstrează doar dispozitivele al căror nume de dispozitiv conține șirul „Intel”.Utilizarea asteriscului ca wildcard vă permite să căutați potriviri parțiale oriunde în text.
Aceeași idee poate fi folosită pentru a localiza drivere legate de o anumită aplicație sau tip de hardware, de exemplu pentru actualizați driverele USBDacă știți o parte din nume, producătorul sau un anumit model al traseului, puteți adaptați filtrul la proprietatea cu cel mai mare confort in fiecare caz.
Vizualizați driverele din Managerul de dispozitive și din alte instrumente Windows
Deși PowerShell este foarte puternic pentru automatizarea și exportarea listelor, Windows oferă în continuare instrumente grafice clasice pentru gestionarea controlerelor care ar trebui cunoscută și combinată cu calea de comandă.
Primul punct de referință este Manager dispozitiveAcest lucru poate fi accesat făcând clic dreapta pe „Acest PC” și alegând „Gestionare” sau, mai rapid, utilizând meniul contextual al butonului Start (Windows + X). Acolo veți vedea o arborescență cu toate categoriile de hardware instalate pe sistem.
Dispozitivele care au probleme de instalare sau de funcționare apar adesea cu o pictogramă galbenă de avertizareDacă faceți dublu clic pe oricare dintre ele, se deschide fereastra de proprietăți, unde puteți verifica starea dispozitivului și accesa fila „Driver”.
În acea filă veți găsi opțiuni precum „Detalii driver”, „Actualizare driver”, „Revenire la driver”, „Dezactivare” sau „Dezinstalare”Aceste acțiuni vă permit să vizualizați fișierele driverului, să căutați versiuni noi, să reveniți la o versiune anterioară, să dezactivați dispozitivul fără a-l elimina sau să eliminați complet driverul din sistem.
Pe lângă aceste instrumente, Windows include comanda driverquery a utiliza din prompt de comandă (CMD). Alergare driverquery Veți primi o listă cu toate driverele instalate și cu driverquery /v Veți vedea informații mai detaliate, cum ar fi utilizarea memoriei, data construirii sau starea.
driverquery și relația sa cu PowerShell
Comanda driverquery este foarte flexibilă și permite Vizualizați diferite vizualizări ale stării șoferuluiDe exemplu, dacă doriți să listați mai detaliat doar driverele semnate, puteți executa:
driverquery /si
Acest mod arată șoferi semnați cu informații utile suplimentare pentru audituri de securitate sau verificări de integritate. Și puteți oricând consulta driverquery /? pentru a vedea toți parametrii disponibili și a ajusta rezultatul în funcție de nevoile dumneavoastră.
Unul dintre avantajele driverquery este că Îl poți integra cu PowerShell folosind ConvertFrom-CSVDacă generați rezultatul în format CSV și îl redirecționați prin pipe, veți obține obiecte care pot fi manipulate din PowerShell. Un exemplu clasic ar fi:
driverquery.exe /v /fo csv | ConvertFrom-CSV | Select-Object "Display Name", "Start Mode", "Paged Pool(bytes)", Path
Cu aceasta combinați Puterea driverquery cu manipularea datelor PowerShellSelectarea doar a coloanelor care vă interesează: numele afișat, modul de pornire, memoria paginată și calea driverului pe disc. Acest lucru este util atunci când doriți să filtrați după anumite tipuri, cum ar fi drivere grafice.
Trebuie menționat că atât driverquery, cât și anumite interogări WMI standard se concentrează în principal pe șoferii înregistrați în sistem, mulți dintre ei încărcați în cizmă sau gestionate prin registry la adresa HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Este posibil ca unele drivere injectate dinamic la momentul execuției să nu apară în aceste liste.
Listați driverele din PowerShell cu Get-WindowsDriver
Pentru scenarii mai avansate, în special atunci când se lucrează cu Imagini offline Windows (de exemplu, WIM-uri montate), cmdletul este foarte util Obțineți-WindowsDriver, care face parte din instrumentele DISM accesibile din PowerShell.
Acest cmdlet vă permite să afișați informații despre pachetele de drivere atât pentru instalarea Windows în execuție, cât și pentru o imagine montată într-un folder. Sintaxa principală este împărțită în două moduri principale de utilizare: offline și online.
Pentru a imagine offline montată într-un folderForma generală ar fi:
Get-WindowsDriver -Path "C:\offline"
Și pentru a lucra împotriva sistemului care rulează, ați folosi parametrul -Pe net:
Get-WindowsDriver -Online
Fără parametri suplimentari, Get-WindowsDriver returnează lista de drivere terțe prezent în imagine. Dacă adăugați modificatorul -ToateVeți vedea, de asemenea, driverele implicite incluse în Windows.
Parametrii cheie ai Get-WindowsDriver
Unul dintre cei mai importanți parametri este -Conducător autocare vă permite să specificați un anumit fișier .inf sau un folder de fișiere .inf Pentru a obține informații detaliate despre acele drivere. Dacă indicați spre un folder, fișierele .inf care nu sunt pachete de drivere valide sunt ignorate automat.
Când lucrați cu o imagine offline, parametrul -Cale specifică calea rădăcină a imaginii montate. Dacă folderul Windows nu se află chiar la acel nivel rădăcină, puteți utiliza -Directorul Windows pentru a specifica subfolderul relativ în care se află.
Parametru -SystemDrive Se utilizează în scenarii mai specifice, cum ar fi atunci când se lucrează din Windows PE și managerul de boot se află pe o partiție diferită. În aceste cazuri, servește la specificarea unității care conține fișierele BootMgr care ar trebui servite.
În ceea ce privește jurnalul de activitate, parametrul -LogPath Vă permite să definiți calea completă către fișierul jurnal. Dacă nu o modificați, se utilizează calea implicită. %WINDIR%\Logs\Dism\dism.logsau în Windows PE, spațiul de stocare din memoria RAM. Între timp, -Nivel de jurnal determină gradul de verbositate al jurnalului, cu valori variind de la doar erori până la includerea informațiilor de depanare.
În cele din urmă, parametrul -Director de reutilizare Acesta este folderul temporar în care sunt extrase fișierele în timpul operațiunilor de service. Trebuie să fie o cale locală și, odată ce operațiunea este finalizată, fișiere temporare Acestea sunt îndepărtate automat pentru a nu lăsa reziduuri.
Exemple practice cu Get-WindowsDriver
Pentru a vedea rapid toate driverele pentru instalarea curentă de Windows, puteți executa:
Get-WindowsDriver -Online -All
Această comandă se va afișa toți driverele (atât de sistem, cât și de la terți) prezent în imaginea care rulează. Este o modalitate foarte directă de a vedea ce pachete sunt instalate fără a utiliza WMI sau Device Manager.
Dacă lucrați cu un imagine montată în C:\offline Și dacă doriți să verificați doar driverele terțe, puteți face următoarele:
Get-WindowsDriver -Path "C:\offline"
Dacă doriți un raport detaliat al unui anumit driver OEM din imaginea respectivă, specificați pur și simplu fișierul .inf:
Get-WindowsDriver -Path "C:\offline" -Driver "OEM1.inf"
Puteți chiar accesa un fișier .inf situat într-o anumită cale de driver, de exemplu:
Get-WindowsDriver -Path "C:\offline" -Driver "C:\drivers\Usb\Usb.inf"
În toate aceste cazuri, Get-WindowsDriver returnează obiecte pe care le puteți direcționa către Select-Object, Where-Object sau Export-CSV pentru a filtra, sorta sau exporta informațiile în formatul care vi se potrivește cel mai bine.
PowerShell și SCCM: Get-CMDriver pentru cataloage de drivere
Când gestionezi un mediu corporativ cu Manager de configurare (SCCM)Nu ești interesat doar de driverele de pe fiecare computer, ci și de catalogul centralizat de drivere pe care SCCM îl menține pentru implementarea imaginilor și pachetelor.
În acest context, intră în joc cmdletul. Obțineți-CMDriver, Asta funcționează pentru Preluarea informațiilor din driverele de dispozitiv gestionate de Configuration ManagerAcest cmdlet are mai multe semnături în funcție de ceea ce doriți să interogați: după nume, după identificator numeric, după pachet de drivere sau după categorie administrativă.
Sintaxa de bază include variante precum:
Get-CMDriver
Get-CMDriver -DriverPackageId <String>
Get-CMDriver -DriverPackageName <String>
Get-CMDriver -Id <Int32>
Get-CMDriver -InputObject <IResultObject>
Cu acești parametri puteți direcționa interogările către catalogul SCCM, filtrând după numele driverului, identificatorul, pachetele asociate sau categoriile administrative pe care le-ați definit pentru a vă organiza controlerele.
Exemple cu Get-CMDriver
Dacă știți numele unui anumit driver, de exemplu „Surface Serial Hub Driver”, puteți obține detaliile acestuia cu:
Get-CMDriver -Name "Surface Serial Hub Driver"
Când trebuie să verificați mai multe drivere care au același prefix în nume (cum ar fi întreaga familie de drivere Surface) și doriți să vedeți doar câteva proprietăți relevante, puteți utiliza ceva de genul:
Get-CMDriver -Fast -Name "Surface*" | Select-Object LocalizedDisplayName, DriverVersion, DriverDate
Modificatorul -Rapid Reduce cantitatea de informații recuperate și accelerează interogarea, ceea ce este destul de vizibil în cataloagele mari. Apoi, cu Select-Object, Păstrezi doar coloanele care îți sunt utile pentru analiza dumneavoastră.
Dacă gestionați categorii administrative (de exemplu, o categorie „Surface” în care grupați toate acele controlere), puteți înlănțui recuperarea categoriei și a driverelor astfel:
$category = Get-CMCategory -Name "Surface"
Get-CMDriver -Fast -AdministrativeCategory $category
În acest caz, mai întâi stocați categoria într-o variabilă și apoi cereți lui Get-CMDriver să v-o returneze. toți controlorii asociați categoriei respective, ceva foarte util pentru menținerea vizualizărilor logice ale controlerelor în SCCM.
Limitări la listarea driverelor încărcate dinamic
Nu toți driverele se comportă la fel. Există instrumente, cum ar fi unele din suită. Sysinternals (de exemplu, Process Explorer sau handle.exe)care injectează dinamic drivere în kernel atunci când sunt executate, fără a le înregistra ca servicii tradiționale încărcate la pornire.
Un exemplu tipic este șoferul procexp152.sys (sau versiuni anterioare, cum ar fi procexp113.sys), asociate cu Process Explorer. Este posibil ca acest tip de driver să nu apară în interogările standard ale Get-WmiObject Win32_SystemDriverdeoarece aceste interogări se bazează pe informații din serviciile de registry (CurrentControlSet\Services) și reflectă de obicei în principal driverele încărcate odată cu sistemul.
În mod similar, Este posibil ca driverquery să nu liste toate driverele injectate dinamicAșadar, dacă depanați erori BSOD sau comportamente anormale cauzate de instrumente terțe care își încarcă propriile drivere, este posibil să fie nevoie să recurgeți la alte metode.
Printre aceste alternative se numără examina depozite de memorie nucleu cu instrumente precum WinDbg sau utilizați utilitare precum verificator.exeVerificatorul de drivere vă permite să selectați driverele pe care doriți să le monitorizați și să detectați comportamentul instabil, dar interfața grafică oferă mai multe opțiuni de enumerare decât versiunea din linia de comandă, care se concentrează pe interogarea și configurarea verificării.
Pe scurt, pentru un inventar general și pentru majoritatea nevoilor administrative, PowerShell, WMI și Get-WindowsDriver acoperă foarte bine bazele.Totuși, în cazuri extreme de depanare a driverelor încărcate la cald, va trebui să suplimentați cu instrumente de analiză a kernelului.
Actualizați driverele cu PowerShell folosind PSWindowsUpdate
Pe lângă listarea driverelor, mulți administratori folosesc PowerShell pentru automatizează actualizările driverelor prin Windows Update și, de asemenea, pentru actualizați driverele de sunetO metodă frecvent utilizată este prin intermediul modulului PSWindowsUpdate, care extinde cmdlet-urile standard de actualizare.
Fluxul obișnuit trece prin activați temporar executarea scripturilor semnateInstalați modulul și apoi solicitați actualizări de drivere direct de pe serverele Microsoft.
Un set tipic de comenzi ar putea fi:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Install-Module PSWindowsUpdate
Import-Module PSWindowsUpdate
Get-WindowsUpdate
Get-WindowsUpdate -MicrosoftUpdate -Category Driver -Install -AutoReboot
Această secvență permite execuția scriptului pentru sesiunea curentă, instalează și importă modulul PSWindowsUpdate, Verifici ce actualizări sunt disponibile. Și, în final, solicitați instalarea lor din categoria „Driver” prin Microsoft Update, permițând sistemului să repornească automat, dacă este necesar.
De asemenea, puteți extinde domeniul de aplicare utilizând o comandă care instalează toate actualizările detectate de Microsoft Update și repornește fără intervenție, de exemplu:
Get-WindowsUpdate -MicrosoftUpdate -Install -AutoReboot
Acest mod de lucru este deosebit de practic în parcuri mari pentru echipeAici este cazul în care doriți să standardizați versiunile de drivere fără a le parcurge pe rând. Cu toate acestea, este întotdeauna recomandabil să combinați acest lucru cu un inventar prealabil bun de drivere și, în mediile critice, să testați într-un grup pilot înainte de implementarea în întreaga organizație.
Scriitor pasionat despre lumea octeților și a tehnologiei în general. Îmi place să îmi împărtășesc cunoștințele prin scriere și asta voi face în acest blog, să vă arăt toate cele mai interesante lucruri despre gadgeturi, software, hardware, tendințe tehnologice și multe altele. Scopul meu este să vă ajut să navigați în lumea digitală într-un mod simplu și distractiv.
