Hur man listar och hanterar drivrutiner från PowerShell i Windows

Senaste uppdateringen: 04/12/2025
Författare: Isaac
  • Power Det låter dig lista, filtrera och exportera chaufförer med cmdlets som Get-WmiObject och Get-WindowsDriver.
  • förarfrågan, den Enhetshanteraren och SCCM (Get-CMDriver) kompletterar kontrollenhetens inventering.
  • Vissa dynamiskt laddade drivrutiner kräver ytterligare verktyg som WinDbg eller verifier.
  • Moduler som PSWindowsUpdate och externa verktyg gör det enkelt att uppdatera och hålla drivrutiner uppdaterade.

Lista drivrutiner från PowerShell

I Windows-miljöer, kontrollera vilka drivrutiner som är installerade och vilken version varje drivrutin har Det är nyckeln till att upprätthålla systemstabilitet, felsöka blåskärmar eller förbereda migreringar. PowerShell har blivit ett otroligt bekvämt verktyg för att utföra den här typen av inventering utan att behöva gå igenom Enhetshanteraren en efter en.

I följande rader ser du Hur man listar kontroller från PowerShell på olika sätt och hur man exporterar dem till filer för att lugnt analysera dem, vilka skillnader det finns med andra kommandon som driverquery eller grafiska verktyg, och till och med hur man hanterar mer avancerade scenarier som offline-bilder eller dynamiskt laddade drivrutiner.

Vad är en drivrutin och varför skulle du vilja lista den från PowerShell?

Enhetsdrivrutiner i Windows

I Windows är en styrenhet eller drivrutin ett litet programblock som fungerar som en mellanhand mellan operativsystemet och en komponent i hårdvara (grafikkort, chipset, lagringkringutrustning USBetc.). Även om den kod de upptar inte är enorm, är deras inverkan på systemstabiliteten gigantisk.

När en kritisk drivkraft (till exempel lagring, nätverk, grafik eller chipset) funktionsfel, kan orsaka krascher, prestandaförlust och till och med blå skärmar (BSOD)Därför är det så användbart att ha en tydlig lista över installerade drivrutiner och deras version när du felsöker buggar eller förbereder dig för en större uppdatering.

Innan du rusar för att ändra, avinstallera eller återställa drivrutiner är det en bra idé minimera risker med en systemåterställningspunktPå så sätt kan du återställa om en drivrutinsuppdatering går fel och datorn börjar bete sig konstigt eller inte ens startar korrekt.

Förutom restaurangen är det lämpligt säkerhetskopiera viktiga data (dokument, foton, arbetsprojekt etc.), särskilt om du ska röra lagringsdrivrutiner, eftersom ett misstag kan göra att systemet inte monterar enheterna korrekt eller att informationen skadas.

Grundläggande kommando i PowerShell för att lista installerade drivrutiner

Det mest direkta sättet att hämta en kontrollerinventering från PowerShell är lita på WMIEtt av de vanligaste kommandona är:

Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion

Med denna cmdlet, PowerShell frågar efter Win32_PnPSignedDriver WMI-klassen och returnerar en lista över de signerade PnP-drivrutinerna, tillsammans med enhetsnamnet och den drivrutinsversion som systemet för närvarande har associerad med den.

Om du vill ha lite mer sammanhang om varje drivrutin kan du lägga till fält som vänligt namn, publiceringsdatum eller tillverkare. Till exempel:

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

Med denna konsultation får du Mycket mer fullständig information för varje inläggDetta gör att du kan upptäcka äldre versioner, specifika tillverkare eller drivrutiner som inte har uppdaterats på flera år.

Hur man exporterar förarlistan till en fil (TXT eller CSV)

I verkliga miljöer räcker det sällan att bara titta på listan på skärmen. Det enklaste tillvägagångssättet är... spara resultatet till en fil att analysera det i Excel, dela det med teamet eller spara det som en ögonblicksbild av systemets tillstånd innan några ändringar görs, till exempel innan ta bort gamla drivrutiner.

Om du bara behöver en snabb lista i vanlig text kan du omdirigera utdata till en fil:

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

Det kommandot skapar en fil C:\drivers.txt med en enkel lista över enheter och versioner. Perfekt för snabb referens eller för att bifoga till en rapport utan alltför mycket krångel.

När du letar efter något mer hanterbart för filtrering och sortering är det bästa alternativet att använda CSV och cmdlet:en Export-CSVEtt mycket vanligt exempel skulle vara:

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

Med det här kommandot skapas en fil med namnet MinaDrivrutiner.csv som du kan öppna i Excel eller vilket kalkylprogram som helst sortera efter version, filtrera efter drivrutinsdatum, sök efter specifika tillverkareEtc.

Även om det ibland sägs att PowerShell "inte tillåter export" av drivrutinslistan, så är det i verkligheten Ja, det kan exporteras perfekt. Använd omdirigering av utdata eller Export-CSV, som du just såg. Sedan kan du kopiera, klistra in eller arbeta med informationen var du vill.

  25 fantastiska verktyg för att extrahera ljudfiler från videor

Filtrera drivrutiner efter tillverkare, namn eller specifik text

Normalt sett vill du inte se alla drivrutiner samtidigt, utan snarare fokusera på en specifik tillverkare eller enhetstyp. För det kan du kedja filter med Where-Object om egenskaperna hos varje drivrutin.

Om du till exempel bara vill behålla drivrutinerna för IntelDu kan göra något så enkelt som:

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

Det här kommandot itererar igenom alla poster som returneras av WMI och Den hanterar bara de vars enhetsnamn innehåller strängen "Intel"Genom att använda asterisken som jokertecken kan du söka efter ofullständiga träffar var som helst i texten.

Samma idé kan användas för att hitta drivrutiner relaterade till en specifik applikation eller typ av hårdvara, till exempel för uppdatera USB-drivrutinerOm du känner till en del av namnet, tillverkaren eller något mönster för rutten kan du anpassa filtret till den mest bekväma egendomen i varje fall.

Visa drivrutiner från Enhetshanteraren och andra Windows-verktyg

Även om PowerShell är mycket kraftfullt för att automatisera och exportera listor, erbjuder Windows fortfarande klassiska grafiska verktyg för att hantera controllers vilket bör vara känt och kombinerat med kommandovägen.

Den första referenspunkten är EnhetshanterarenDetta kan nås genom att högerklicka på "Den här datorn" och välja "Hantera", eller snabbare genom att använda snabbmenyn på Start-knappen (Windows + X). Där ser du ett träd med alla hårdvarukategorier som är installerade på systemet.

Enheter som har installations- eller driftsproblem visas ofta med en gul varningsikonOm du dubbelklickar på någon av dem öppnas egenskapsfönstret där du kan kontrollera enhetens status och komma åt fliken "Drivrutin".

Inom den fliken hittar du alternativ som "Drivrutinsinformation", "Uppdatera drivrutin", "Återställ drivrutin", "Inaktivera" eller "Avinstallera"Med dessa åtgärder kan du visa drivrutinsfilerna, söka efter nya versioner, återgå till en tidigare version, inaktivera enheten utan att ta bort den eller ta bort drivrutinen helt från systemet.

Utöver dessa verktyg inkluderar Windows kommandot driverquery att använda från kommandotolken (CMD). Löpning driverquery Du får en lista över alla installerade drivrutiner, och med driverquery /v Du får se mer detaljerad information, till exempel minnesanvändning, byggdatum eller status.

drivrutinsfrågan och dess relation till PowerShell

Driverquery-kommandot är mycket flexibelt och tillåter Visa olika vyer av förarens statusOm du till exempel bara vill lista signerade drivrutiner mer detaljerat kan du köra:

driverquery /si

Det här läget visar signerade förare med ytterligare användbar information för säkerhetsrevisioner eller integritetskontroller. Och du kan alltid rådfråga driverquery /? för att se alla tillgängliga parametrar och justera utdata efter dina behov.

En av fördelarna med drivrutinsfrågan är att Du kan integrera det med PowerShell med hjälp av ConvertFrom-CSVOm du genererar utdata i CSV-format och skickar den via pipe, får du objekt som kan manipuleras från PowerShell. Ett klassiskt exempel skulle vara:

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

Med detta kombinerar du Kraften i drivrutinsfrågor med PowerShell-datamanipulationMarkera endast de kolumner du är intresserad av: visningsnamn, startläge, växlande minne och drivrutinssökväg på disk. Detta är användbart när du vill filtrera efter specifika typer, till exempel grafikdrivrutiner.

Det bör noteras att både driverquery och vissa standard WMI-frågor huvudsakligen fokuserar på förare registrerade i systemet, många av dem lastade in i boot eller hanteras via registret på HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Vissa drivrutiner som injiceras dynamiskt vid körning kanske inte visas i dessa listor.

Lista drivrutiner från PowerShell med Get-WindowsDriver

För mer avancerade scenarier, särskilt när man arbetar med Windows offline-bilder (till exempel monterade WIM-filer), är cmdlet:en mycket användbar Hämta Windows-drivrutin, vilket är en del av DISM-verktygen som är tillgängliga från PowerShell.

Denna cmdlet låter dig visa information om drivrutinspaket för både den pågående Windows-installationen och en avbildning monterad i en mapp. Huvudsyntaxen är uppdelad i två huvudsakliga användningslägen: offline och online.

  Så här tar du bort filer som används i Windows steg för steg

För en offlinebild monterad i en mappDen allmänna formen skulle vara:

Get-WindowsDriver -Path "C:\offline"

Och för att arbeta mot det körande systemet skulle du använda parametern -Uppkopplad:

Get-WindowsDriver -Online

Utan ytterligare parametrar, Get-WindowsDriver returnerar listan över tredjepartsdrivrutiner finns i bilden. Om du lägger till modifieraren -AllaDu kommer också att se standarddrivrutiner som ingår som standard i Windows.

Viktiga parametrar för Get-WindowsDriver

En av de viktigaste parametrarna är -Förarevilket låter dig specificera en specifik .inf-fil eller en mapp med .inf-filer För att få detaljerad information om dessa drivrutiner. Om du pekar på en mapp ignoreras .inf-filer som inte är giltiga drivrutinspaket automatiskt.

När du arbetar med en offlinebild, parametern -Väg anger rotsökvägen för den monterade avbildningen. Om Windows-mappen inte är på den rotnivån kan du använda -Windows-katalogen för att ange den relativa undermapp där den finns.

Parameter -Systemenhet Den används i mer specifika scenarier, till exempel när man arbetar från Windows PE och starthanteraren finns på en annan partition. I dessa fall tjänar den till att ange vilken enhet som innehåller BootMgr-filerna som ska hanteras.

Angående aktivitetsloggen, parametern -LogPath Den låter dig definiera den fullständiga sökvägen till loggfilen. Om du inte justerar den används standardsökvägen. %WINDIR%\Logs\Dism\dism.logeller i Windows PE, scratch-utrymmet i RAM-minnet. Samtidigt, -Lognivå avgör loggens utförlighet, med värden som sträcker sig från bara fel till att inkludera felsökningsinformation.

Slutligen, parametern -Scratch-katalog Detta är den tillfälliga mappen där filer extraheras under tjänståtgärder. Den måste vara en lokal sökväg och när åtgärden är klar, tillfälliga filer De tas bort automatiskt för att inte lämna några rester.

Praktiska exempel med Get-WindowsDriver

För att snabbt se alla drivrutiner för din nuvarande Windows-installation kan du köra:

Get-WindowsDriver -Online -All

Detta kommando kommer att visas alla drivrutiner (både system- och tredjepartsdrivrutiner) finns i den pågående avbildningen. Det är ett mycket direkt sätt att se vilka paket som är installerade utan att använda WMI eller Enhetshanteraren.

Om du arbetar med en bild monterad i C:\offline Och om du bara vill kontrollera drivrutiner från tredje part kan du göra följande:

Get-WindowsDriver -Path "C:\offline"

Om du vill ha en detaljerad rapport om en specifik OEM-drivrutin i den avbildningen, ange helt enkelt .inf-filen:

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

Du kan till och med rikta in dig på en .inf-fil som finns i en specifik drivrutinssökväg, till exempel:

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

Och todos estos casos, Get-WindowsDriver returnerar objekt som du kan skicka till Select-Object, Where-Object eller Export-CSV för att filtrera, sortera eller exportera informationen till det format som passar dig bäst.

PowerShell och SCCM: Get-CMDriver för drivrutinskataloger

När du hanterar en företagsmiljö med Konfigurationshanteraren (SCCM)Du är inte bara intresserad av drivrutinerna på varje dator, utan också av den centraliserade katalogen över drivrutiner som SCCM underhåller för att distribuera avbildningar och paket.

I det sammanhanget kommer cmdlet:en in i bilden. Get-CMDriver, Det fungerar för Hämta information från enhetsdrivrutiner som hanteras av Configuration ManagerDenna cmdlet har flera signaturer beroende på vad du vill fråga: efter namn, efter numerisk identifierare, efter drivrutinspaket eller efter administrativ kategori.

Den grundläggande syntaxen inkluderar varianter som:

Get-CMDriver

Get-CMDriver -DriverPackageId <String>

Get-CMDriver -DriverPackageName <String>

Get-CMDriver -Id <Int32>

Get-CMDriver -InputObject <IResultObject>

Med dessa parametrar kan du rikta dina frågor till SCCM-katalogen och filtrera efter drivrutinsnamn, identifierare, tillhörande paket eller administrativa kategorier som du har definierat för att organisera dina kontroller.

Exempel med Get-CMDriver

Om du vet namnet på en specifik drivrutin, till exempel "Surface Serial Hub Driver", kan du få dess information med:

Get-CMDriver -Name "Surface Serial Hub Driver"

När du behöver kontrollera flera drivrutiner som delar samma prefix i sitt namn (som hela Surface-drivrutinsfamiljen) och du bara vill se några relevanta egenskaper kan du använda något i stil med:

  Erhålla misslyckades – Fel med otillräckliga behörigheter i Chrome

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

Modifieraren -Snabb Det minskar mängden information som hämtas och snabbar upp sökningen, vilket är ganska märkbart i stora kataloger. Sedan, med Select-Object, Du behåller bara de kolumner som är användbara för dig för din analys.

Om du hanterar administrativa kategorier (till exempel en "Surface"-kategori där du grupperar alla dessa styrenheter) kan du länka kategori- och drivrutinshämtning så här:

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

I det här fallet lagrar du först kategorin i en variabel och ber sedan Get-CMDriver att returnera den till dig. alla kontrollanter som är kopplade till den kategorin, något mycket användbart för att underhålla logiska vyer av dina kontroller i SCCM.

Begränsningar vid lista av dynamiskt laddade drivrutiner

Alla förare beter sig inte likadant. Det finns verktyg, som till exempel vissa i sviten. Sysinternals (till exempel Process Explorer eller handle.exe)som dynamiskt injicerar drivrutiner i kärnan när de körs, utan att registrera dem som traditionella tjänster som laddas vid start.

Ett typiskt exempel är föraren procexp152.sys (eller tidigare versioner som procexp113.sys), associerade med Process Explorer. Den här typen av drivrutin kanske inte visas i standardfrågor för Get-WmiObject Win32_SystemDrivereftersom dessa frågor är beroende av information från registertjänster (CurrentControlSet\Services) och vanligtvis huvudsakligen återspeglar drivrutiner som är laddade med systemet.

på liknande sätt, driverquery kanske inte listar alla dynamiskt injicerade drivrutinerSå om du felsöker BSOD:er eller avvikande beteenden som orsakas av tredjepartsverktyg som laddar sina egna drivrutiner, kan du behöva tillgripa andra metoder.

Bland dessa alternativ finns undersöka minnesdumpar kärna med verktyg som WinDbg, eller använd verktyg som verifier.exeDrivrutinsverifieraren låter dig välja drivrutiner som du vill övervaka och upptäcka instabilt beteende, men det grafiska gränssnittet erbjuder fler uppräkningsalternativ än kommandoradsversionen, som fokuserar på att fråga och konfigurera verifiering.

Kort sagt, för en allmän inventering och för de flesta administrativa behov, PowerShell, WMI och Get-WindowsDriver täcker baserna mycket bra.I extrema fall av felsökning av drivrutiner som laddas under drift måste du dock komplettera med verktyg för kärnanalys.

Uppdatera drivrutiner med PowerShell med hjälp av PSWindowsUpdate

Förutom att lista drivrutiner använder många administratörer PowerShell för att automatisera drivrutinsuppdateringar via Windows Update och också för uppdatera ljuddrivrutinerEn vanligt förekommande metod är via PSWindowsUpdate-modulen, som utökar standarduppdaterings-cmdlets.

Det vanliga flödet passerar genom tillfälligt aktivera körning av signerade skriptInstallera modulen och begär sedan drivrutinsuppdateringar direkt från Microsofts servrar.

En typisk uppsättning kommandon kan vara:

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

Den här sekvensen aktiverar skriptkörning för den aktuella sessionen, installerar och importerar PSWindowsUpdate-modulen, Du kollar vilka uppdateringar som finns tillgängliga. Och slutligen begär du att de installeras från kategorin "Drivrutin" via Microsoft Update, så att systemet kan starta om automatiskt om det behövs.

Du kan också utöka omfattningen genom att använda ett kommando som installerar alla uppdateringar som upptäcks från Microsoft Update och startar om utan ingripande, till exempel:

Get-WindowsUpdate -MicrosoftUpdate -Install -AutoReboot

Detta arbetssätt är särskilt praktiskt i stora lagparkerDet är här du vill standardisera drivrutinsversioner utan att gå igenom en och en. Det är dock alltid lämpligt att kombinera detta med en bra förhandsinventering av drivrutiner och, i kritiska miljöer, testa i en pilotgrupp innan de distribueras till hela organisationen.

Windows-kringutrustning, problem med drivrutiner
Relaterad artikel:
Komplett guide för att ta bort spökenheter och föräldralösa drivrutiner i Windows