- PowerShell Den lar deg liste, filtrere og eksportere drivere med cmdleter som Get-WmiObject og Get-WindowsDriver.
- sjåførspørringen, den Enhetsbehandling og SCCM (Get-CMDriver) utfyller kontrollerbeholdningen.
- Noen dynamisk lastede drivere krever tilleggsverktøy som WinDbg eller verifier.
- Moduler som PSWindowsUpdate og eksterne verktøy gjør det enkelt å oppdatere og holde drivere oppdatert.
I Windows-miljøer, kontrollere hvilke drivere som er installert og hvilken versjon hver av dem har Det er nøkkelen til å opprettholde systemstabilitet, feilsøke blåskjermer eller forberede migreringer. PowerShell har blitt et utrolig praktisk verktøy for å utføre denne typen inventar uten å måtte gå gjennom Enhetsbehandling én etter én.
I de følgende linjene vil du se Slik viser du kontrollere fra PowerShell på ulike måter, og hvordan eksporterer du dem til filer for å analysere dem rolig, hvilke forskjeller det er med andre kommandoer som driverquery eller grafiske verktøy, og til og med hvordan man håndterer mer avanserte scenarier som frakoblede bilder eller dynamisk lastede drivere.
Hva er en driver, og hvorfor vil du liste den opp fra PowerShell?

I Windows er en kontroller eller driver en liten programvareblokk som fungerer som et mellomledd mellom operativsystemet og en komponent i maskinvare (grafikkort, brikkesett, lagringperiferiutstyr USBosv.). Selv om koden de bruker ikke er enorm, er innvirkningen deres på systemstabiliteten gigantisk.
Når en kritisk driver (for eksempel lagring, nettverk, grafikk eller brikkesett) funksjonsfeil, kan forårsake krasj, tap av ytelse og til og med blåskjermer (BSOD)Derfor er det så nyttig å ha en tydelig liste over installerte drivere og deres versjon når du feilsøker feil eller forbereder deg på en større oppdatering.
Før du haster med å endre, avinstallere eller tilbakestille drivere, er det lurt minimer risikoer med et systemgjenopprettingspunktPå denne måten kan du gå tilbake hvis en driveroppdatering går galt og datamaskinen begynner å oppføre seg merkelig eller ikke engang starter opp riktig.
I tillegg til restauranten er det tilrådelig sikkerhetskopier viktige data (dokumenter, bilder, arbeidsprosjekter osv.), spesielt hvis du skal berøre lagringsdrivere, siden en feil kan føre til at systemet ikke monterer stasjonene riktig eller ødelegger informasjon.
Grunnleggende kommando i PowerShell for å liste opp installerte drivere
Den mest direkte måten å hente en kontrollerinventar fra PowerShell på er stole på WMIEn av de mest brukte kommandoene er:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion
Med denne cmdlet-en, PowerShell spør Win32_PnPSignedDriver WMI-klassen og returnerer en liste over de signerte PnP-driverne, sammen med enhetsnavnet og driverversjonen som systemet for øyeblikket har tilknyttet.
Hvis du vil ha litt mer kontekst om hver driver, kan du legge til felt som vennlig navn, publiseringsdato eller produsent. For eksempel:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, Manufacturer, DriverVersion, DriverDate
Med denne konsultasjonen får du Mye mer fullstendig informasjon for hver oppføringDette lar deg oppdage eldre versjoner, bestemte produsenter eller drivere som ikke har blitt oppdatert på flere år.
Slik eksporterer du sjåførlisten til en fil (TXT eller CSV)
I virkelige situasjoner er det sjelden nok å bare se listen på skjermen. Den mest praktiske tilnærmingen er... lagre resultatet i en fil å analysere det i Excel, dele det med teamet, eller beholde det som et øyeblikksbilde av systemets tilstand før du gjør endringer, for eksempel før slett gamle drivere.
Hvis du bare trenger en rask ren tekstliste, kan du omdirigere utdataene til en fil:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion > C:\drivers.txt
Den kommandoen oppretter en fil C:\drivere.txt med en enkel liste over enheter og versjoner. Ideell for rask referanse eller vedlegg i en rapport uten for mye stress.
Når du ser etter noe mer håndterbart for filtrering og sortering, er det beste alternativet å bruke CSV og cmdleten Export-CSVEt veldig vanlig eksempel ville være:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, DriverVersion, DriverDate | Export-CSV -Path "./MisDrivers.csv" -NoTypeInformation
Med denne kommandoen, en fil med navnet MineSjåfører.csv som du kan åpne i Excel eller et hvilket som helst regnearkprogram for å sorter etter versjon, filtrer etter driverdato, søk etter spesifikke produsenterOsv
Selv om det noen ganger sies at PowerShell "ikke tillater eksport" av driverlisten, så er det i virkeligheten Ja, den kan eksporteres perfekt. Bruk omdirigering av utdata eller eksport av CSV, som du nettopp så. Deretter kan du kopiere, lime inn eller arbeide med informasjonen hvor du vil.
Filtrer drivere etter produsent, navn eller spesifikk tekst
Normalt sett vil du ikke se alle driverne samtidig, men heller fokusere på en bestemt produsent eller enhetstype. For å gjøre det kan du kjede filtre med Where-Object om egenskapene til hver driver.
Hvis du for eksempel bare er interessert i å beholde driverne for IntelDu kan gjøre noe så enkelt som:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion | Where-Object { $_.DeviceName -like "*Intel*" }
Denne kommandoen itererer seg gjennom alle oppføringene som returneres av WMI og Den vedlikeholder bare de hvis enhetsnavn inneholder strengen "Intel"Ved å bruke stjernen som jokertegn kan du søke etter delvise treff hvor som helst i teksten.
Den samme ideen kan brukes til å finne drivere relatert til et bestemt program eller en maskinvaretype, for eksempel for oppdatere USB-drivereHvis du kjenner deler av navnet, produsenten eller et rutemønster, kan du Tilpass filteret til den mest komfortable eiendommen i hvert tilfelle.
Vis drivere fra Enhetsbehandling og andre Windows-verktøy
Selv om PowerShell er svært kraftig for automatisering og eksport av lister, tilbyr Windows fortsatt klassiske grafiske verktøy for administrasjon av kontrollere som bør være kjent og kombinert med kommandostien.
Det første referansepunktet er EnhetsbehandlingDette kan nås ved å høyreklikke på «Denne PC-en» og velge «Administrer», eller raskere ved å bruke Start-knappens hurtigmeny (Windows + X). Der vil du se et tre med alle maskinvarekategoriene som er installert på systemet.
Enheter som har installasjons- eller driftsproblemer, vises ofte med et gult advarselsikonHvis du dobbeltklikker på noen av dem, åpnes egenskapsvinduet, der du kan sjekke enhetens status og få tilgang til fanen "Driver".
Innenfor den fanen finner du alternativer som "Driverdetaljer", "Oppdater driver", "Tilbakestill driver", "Deaktiver" eller "Avinstaller"Disse handlingene lar deg vise driverfilene, søke etter nye versjoner, gå tilbake til en tidligere versjon, deaktivere enheten uten å fjerne den, eller fjerne driveren fullstendig fra systemet.
I tillegg til disse verktøyene inkluderer Windows kommandoen driverquery å bruke fra ledetekst (CMDLøping driverquery Du vil få en liste over alle installerte drivere, og med driverquery /v Du vil se mer detaljert informasjon, for eksempel minnebruk, byggedato eller status.
driverquery og forholdet mellom det og PowerShell
Driverquery-kommandoen er veldig fleksibel og tillater Se forskjellige visninger av førerstatusenHvis du for eksempel bare vil liste opp signerte drivere mer detaljert, kan du kjøre:
driverquery /si
Denne modusen viser signerte sjåfører med ytterligere nyttig informasjon for sikkerhetsrevisjoner eller integritetskontroller. Og du kan alltid konsultere driverquery /? for å se alle tilgjengelige parametere og justere utgangen etter dine behov.
En av fordelene med driverspørring er at Du kan integrere den med PowerShell ved hjelp av ConvertFrom-CSVHvis du genererer utdataene i CSV-format og sender dem i pipe-format, vil du få objekter som kan manipuleres fra PowerShell. Et klassisk eksempel ville være:
driverquery.exe /v /fo csv | ConvertFrom-CSV | Select-Object "Display Name", "Start Mode", "Paged Pool(bytes)", Path
Med dette kombinerer du Kraften i driverquery med PowerShell-datamanipuleringVelger bare kolonnene du er interessert i: visningsnavn, oppstartsmodus, sidevekslet minne og driverbane på disk. Dette er nyttig når du vil filtrere etter bestemte typer, for eksempel grafikkdrivere.
Det bør bemerkes at både driverquery og visse standard WMI-spørringer primært fokuserer på sjåfører registrert i systemet, mange av dem lastet inn i boot eller administreres gjennom registeret på HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Enkelte drivere som injiseres dynamisk under kjøretid, vises kanskje ikke i disse listene.
Liste over drivere fra PowerShell med Get-WindowsDriver
For mer avanserte scenarier, spesielt når man jobber med Windows frakoblede bilder (for eksempel monterte WIM-er), er cmdleten veldig nyttig Get-WindowsDriver, som er en del av DISM-verktøyene som er tilgjengelige fra PowerShell.
Denne cmdleten lar deg vise informasjon om driverpakker for både den kjørende Windows-installasjonen og et bilde montert i en mappe. Hovedsyntaksen er delt inn i to hovedbruksmoduser: offline og online.
For a frakoblet bilde montert i en mappeDen generelle formen ville være:
Get-WindowsDriver -Path "C:\offline"
Og for å jobbe mot det kjørende systemet, ville du bruke parameteren -På nett:
Get-WindowsDriver -Online
Uten ytterligere parametere, Get-WindowsDriver returnerer listen over tredjepartsdrivere som finnes i bildet. Hvis du legger til modifikatoren -AlleDu vil også se standarddrivere inkludert som standard i Windows.
Viktige parametere for Get-WindowsDriver
En av de viktigste parameterne er -Sjåførsom lar deg spesifisere en bestemt .inf-fil eller en mappe med .inf-filer For å få detaljert informasjon om disse driverne. Hvis du peker på en mappe, ignoreres .inf-filer som ikke er gyldige driverpakker automatisk.
Når du jobber med et frakoblet bilde, parameteren -Sti angir rotbanen til det monterte bildet. Hvis Windows-mappen ikke er på det rotnivået, kan du bruke -Windows-katalogen for å angi den relative undermappen der den befinner seg.
Parameter -Systemstasjon Den brukes i mer spesifikke tilfeller, for eksempel når man jobber fra Windows PE og oppstartsbehandleren er på en annen partisjon. I disse tilfellene tjener den til å spesifisere stasjonen som inneholder BootMgr-filene som skal betjenes.
Angående aktivitetsloggen, parameteren -LogPath Den lar deg definere den fullstendige banen til loggfilen. Hvis du ikke justerer den, brukes standardbanen. %WINDIR%\Logs\Dism\dism.logeller i Windows PE, arbeidsplassen i RAM. I mellomtiden, -Lognivå bestemmer loggens ordrikhet, med verdier som spenner fra bare feil til å inkludere feilsøkingsinformasjon.
Til slutt, parameteren -Scratch-katalogen Dette er den midlertidige mappen der filer pakkes ut under tjenesteoperasjoner. Den må være en lokal sti, og når operasjonen er fullført, midlertidige filer De fjernes automatisk slik at de ikke etterlater rester.
Praktiske eksempler med Get-WindowsDriver
For å raskt se alle driverne for din nåværende Windows-installasjon, kan du kjøre:
Get-WindowsDriver -Online -All
Denne kommandoen vises alle drivere (både system- og tredjepartsdrivere) finnes i det kjørende bildet. Det er en veldig direkte måte å se hvilke pakker som er installert uten å bruke WMI eller Enhetsbehandling.
Hvis du jobber med en bilde montert i C:\offline Og hvis du bare vil sjekke tredjepartsdrivere, kan du gjøre følgende:
Get-WindowsDriver -Path "C:\offline"
Hvis du ønsker en detaljert rapport om en bestemt OEM-driver i det bildet, angir du ganske enkelt .inf-filen:
Get-WindowsDriver -Path "C:\offline" -Driver "OEM1.inf"
Du kan til og med få tilgang til en .inf-fil som ligger i en bestemt driverbane, for eksempel:
Get-WindowsDriver -Path "C:\offline" -Driver "C:\drivers\Usb\Usb.inf"
I alle disse tilfellene, Get-WindowsDriver returnerer objekter som du kan sende til Select-Object, Where-Object eller Export-CSV for å filtrere, sortere eller eksportere informasjonen til formatet som passer deg best.
PowerShell og SCCM: Get-CMDriver for driverkataloger
Når du administrerer et bedriftsmiljø med Konfigurasjonsbehandler (SCCM)Du er ikke bare interessert i driverne på hver datamaskin, men også i den sentraliserte katalogen over drivere som SCCM vedlikeholder for distribusjon av bilder og pakker.
I den sammenhengen kommer cmdlet-en inn i bildet. Get-CMDriver, Det fungerer for Hent informasjon fra enhetsdrivere som administreres av Configuration ManagerDenne cmdleten har flere signaturer avhengig av hva du vil spørre: etter navn, etter numerisk identifikator, etter driverpakke eller etter administrativ kategori.
Den grunnleggende syntaksen inkluderer varianter som:
Get-CMDriver
Get-CMDriver -DriverPackageId <String>
Get-CMDriver -DriverPackageName <String>
Get-CMDriver -Id <Int32>
Get-CMDriver -InputObject <IResultObject>
Med disse parameterne kan du rette spørringene dine til SCCM-katalogen, filtrert etter drivernavn, identifikator, tilknyttede pakker eller administrative kategorier som du har definert for å organisere kontrollerne dine.
Eksempler med Get-CMDriver
Hvis du vet navnet på en bestemt driver, for eksempel «Surface Serial Hub Driver», kan du få tak i detaljene med:
Get-CMDriver -Name "Surface Serial Hub Driver"
Når du trenger å sjekke flere drivere som deler samme prefiks i navnet sitt (som hele Surface-driverfamilien) og du bare vil se noen relevante egenskaper, kan du bruke noe sånt som:
Get-CMDriver -Fast -Name "Surface*" | Select-Object LocalizedDisplayName, DriverVersion, DriverDate
Modifikatoren -Fort Det reduserer mengden informasjon som hentes og øker hastigheten på spørringen, noe som er ganske merkbart i store kataloger. Deretter, med Select-Object, Du beholder bare kolonnene som er nyttige for deg for din analyse.
Hvis du administrerer administrative kategorier (for eksempel en «Surface»-kategori der du grupperer alle disse kontrollerne), kan du kjede henting av kategori og driver slik:
$category = Get-CMCategory -Name "Surface"
Get-CMDriver -Fast -AdministrativeCategory $category
I dette tilfellet lagrer du først kategorien i en variabel og ber deretter Get-CMDriver om å returnere den til deg. alle kontrollører tilknyttet den kategorien, noe som er veldig nyttig for å opprettholde logiske visninger av kontrollerne dine i SCCM.
Begrensninger ved oppføring av dynamisk lastede drivere
Ikke alle sjåfører oppfører seg likt. Det finnes verktøy, slik som noen i pakken. Sysinternals (for eksempel Process Explorer eller handle.exe)som dynamisk injiserer drivere i kjernen når de kjøres, uten å registrere dem som tradisjonelle tjenester lastet inn ved oppstart.
Et typisk eksempel er sjåføren procexp152.sys (eller tidligere versjoner som procexp113.sys), tilknyttet Process Explorer. Denne typen driver vises kanskje ikke i standardspørringer fra Get-WmiObject Win32_SystemDriversiden disse spørringene er avhengige av informasjon fra registertjenester (CurrentControlSet\Services) og vanligvis hovedsakelig gjenspeiler drivere som er lastet inn i systemet.
Tilsvarende, driverquery viser kanskje ikke alle dynamisk injiserte drivereSå hvis du feilsøker BSOD-er eller unormal oppførsel forårsaket av tredjepartsverktøy som laster inn sine egne drivere, må du kanskje ty til andre metoder.
Blant disse alternativene er undersøke minnedumper kjernen med verktøy som WinDbg, eller bruk verktøy som verifier.exeDriververifiseringen lar deg velge drivere du vil overvåke og oppdage ustabil oppførsel, men det grafiske grensesnittet tilbyr flere opplistingsalternativer enn kommandolinjeversjonen, som fokuserer på spørring og konfigurering av verifisering.
Kort sagt, for en generell inventarliste og for de fleste administrative behov, PowerShell, WMI og Get-WindowsDriver dekker basene veldig bra.I ekstreme tilfeller av feilsøking av drivere som lastes inn under oppstart, må du imidlertid supplere med verktøy for kjerneanalyse.
Oppdater drivere med PowerShell ved hjelp av PSWindowsUpdate
I tillegg til å liste opp drivere, bruker mange administratorer PowerShell til automatisere driveroppdateringer via Windows Update og også for oppdater lyddrivereEn vanlig metode er gjennom PSWindowsUpdate-modulen, som utvider standard oppdaterings-cmdleter.
Den vanlige strømmen går gjennom midlertidig aktivere kjøring av signerte skriptInstaller modulen og be deretter om driveroppdateringer direkte fra Microsofts servere.
Et typisk sett med kommandoer kan være:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Install-Module PSWindowsUpdate
Import-Module PSWindowsUpdate
Get-WindowsUpdate
Get-WindowsUpdate -MicrosoftUpdate -Category Driver -Install -AutoReboot
Denne sekvensen aktiverer skriptkjøring for gjeldende økt, installerer og importerer PSWindowsUpdate-modulen, Du sjekker hvilke oppdateringer som er tilgjengelige. Og til slutt ber du om at de installeres fra kategorien «Driver» via Microsoft Update, slik at systemet kan starte på nytt automatisk om nødvendig.
Du kan også utvide omfanget ved å bruke en kommando som installerer alle oppdateringer som oppdages fra Microsoft Update og starter på nytt uten inngripen, for eksempel:
Get-WindowsUpdate -MicrosoftUpdate -Install -AutoReboot
Denne arbeidsmåten er spesielt praktisk i store lagparkerDet er her du ønsker å standardisere driverversjoner uten å gå én etter én. Det er imidlertid alltid lurt å kombinere dette med en god forhåndsinventar av drivere, og i kritiske miljøer teste i en pilotgruppe før du distribuerer til hele organisasjonen.
Lidenskapelig forfatter om verden av bytes og teknologi generelt. Jeg elsker å dele kunnskapen min gjennom å skrive, og det er det jeg skal gjøre i denne bloggen, vise deg alle de mest interessante tingene om dingser, programvare, maskinvare, teknologiske trender og mer. Målet mitt er å hjelpe deg med å navigere i den digitale verden på en enkel og underholdende måte.
