- Powershell Es ermöglicht Ihnen, Listen zu erstellen, zu filtern und zu exportieren. Treiber mit Cmdlets wie Get-WmiObject und Get-WindowsDriver.
- driverquery, die Geräte-Manager und SCCM (Get-CMDriver) ergänzen die Controller-Inventarisierung.
- Manche dynamisch geladene Treiber benötigen zusätzliche Tools wie WinDbg oder einen Verifizierer.
- Module wie PSWindowsUpdate und externe Hilfsprogramme erleichtern das Aktualisieren und Aufrechterhalten von Treibern.
In Windows-Umgebungen Kontrolle darüber, welche Treiber installiert sind und welche Version jeder einzelne hat. Dies ist entscheidend für die Systemstabilität, die Behebung von Bluescreens und die Vorbereitung von Migrationen. PowerShell hat sich als äußerst praktisches Werkzeug für diese Art von Bestandsaufnahme erwiesen, ohne dass man den Geräte-Manager einzeln aufrufen muss.
In den folgenden Zeilen werden Sie sehen Wie man Controller in PowerShell auf verschiedene Arten auflistet und exportiert Die Dateien in Ruhe analysieren, um herauszufinden, welche Unterschiede zu anderen bestehen. Befehle als driverquery oder grafische Werkzeuge, und sogar, wie man mit komplexeren Szenarien wie Offline-Images oder dynamisch geladenen Treibern umgeht.
Was ist ein Treiber und warum sollte man ihn über PowerShell auflisten wollen?

Unter Windows ist ein Controller oder Treiber ein kleiner Softwareblock, der als Vermittler zwischen dem Betriebssystem und einer Komponente fungiert Hardware (Grafikkarte, Chipsatz, LagerungPeripheriegeräte USBusw.). Obwohl der von ihnen belegte Code nicht enorm ist, ist ihr Einfluss auf die Systemstabilität gigantisch.
Wenn ein kritischer Treiber (zum Beispiel Speicher, Netzwerk, Grafik oder ChipsatzFehlfunktionen können zu Abstürzen, Leistungseinbußen und sogar blaue Bildschirme (BSOD)Deshalb ist eine übersichtliche Liste der installierten Treiber und ihrer Versionen so hilfreich, wenn man Fehler behebt oder sich auf ein größeres Update vorbereitet.
Bevor Sie voreilig Treiber ändern, deinstallieren oder auf eine ältere Version zurücksetzen, ist es ratsam, Folgendes zu beachten: Risiken durch einen Systemwiederherstellungspunkt minimierenAuf diese Weise können Sie die vorherige Version rückgängig machen, falls ein Treiberupdate fehlschlägt und der Computer sich seltsam verhält oder gar nicht mehr richtig startet.
Zusätzlich zum Restaurant ist Folgendes empfehlenswert: Sichern Sie wichtige Daten (Dokumente, Fotos, Arbeitsprojekte usw.), insbesondere wenn Sie Speicherlaufwerke bearbeiten, da ein Fehler dazu führen kann, dass das System die Laufwerke nicht korrekt einbindet oder Informationen beschädigt werden.
Einfacher PowerShell-Befehl zum Auflisten der installierten Treiber
Der direkteste Weg, eine Controller-Inventarliste mit PowerShell zu erhalten, ist verlassen Sie sich auf WMIEiner der am häufigsten verwendeten Befehle lautet:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion
Mit diesem Cmdlet PowerShell fragt die Win32_PnPSignedDriver WMI-Klasse ab. und gibt eine Liste der signierten PnP-Treiber sowie den Gerätenamen und die Treiberversion zurück, die dem Gerät aktuell vom System zugeordnet ist.
Wenn Sie etwas mehr Kontext zu jedem Fahrer wünschen, können Sie Felder wie die folgenden hinzufügen: Benutzername, Erscheinungsdatum oder Hersteller. Zum Beispiel:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, Manufacturer, DriverVersion, DriverDate
Mit dieser Beratung erhalten Sie Viel ausführlichere Informationen zu jedem EintragDies ermöglicht es Ihnen, ältere Versionen, bestimmte Hersteller oder Treiber zu erkennen, die seit Jahren nicht aktualisiert wurden.
Wie exportiere ich die Treiberliste in eine Datei (TXT oder CSV)?
In der Praxis reicht es selten aus, die Liste einfach nur auf dem Bildschirm anzuzeigen. Die bequemste Vorgehensweise ist... Das Ergebnis in einer Datei speichern um es in Excel zu analysieren, es mit dem Team zu teilen oder es als Momentaufnahme des Systemzustands vor jeglichen Änderungen zu speichern, zum Beispiel bevor alte Treiber löschen.
Wenn Sie nur eine kurze Auflistung im Klartext benötigen, können Sie die Ausgabe in eine Datei umleiten:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion > C:\drivers.txt
Dieser Befehl erstellt eine Datei C:\drivers.txt Mit einer einfachen Geräte- und Versionsliste. Ideal zum schnellen Nachschlagen oder zum unkomplizierten Hinzufügen zu einem Bericht.
Wenn Sie eine einfachere Möglichkeit zum Filtern und Sortieren suchen, ist die beste Option die Verwendung von CSV und das Export-CSV-CmdletEin sehr häufiges Beispiel wäre:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, DriverVersion, DriverDate | Export-CSV -Path "./MisDrivers.csv" -NoTypeInformation
Mit diesem Befehl wird eine Datei namens MyDrivers.csv die Sie in Excel oder einem beliebigen Tabellenkalkulationsprogramm öffnen können Nach Version sortieren, nach Treiberdatum filtern, nach bestimmten Herstellern suchen, usw.
Obwohl manchmal behauptet wird, PowerShell „erlaube den Export“ der Treiberliste nicht, ist dies in Wirklichkeit nicht der Fall. Ja, es kann einwandfrei exportiert werden. Wie Sie gerade gesehen haben, können Sie die Ausgabe umleiten oder die Export-CSV-Datei verwenden. Anschließend können Sie die Informationen kopieren, einfügen oder anderweitig bearbeiten, wo immer Sie möchten.
Treiber nach Hersteller, Name oder spezifischem Text filtern
Normalerweise möchten Sie nicht alle Treiber gleichzeitig sehen, sondern sich auf einen bestimmten Hersteller oder Gerätetyp konzentrieren. Dazu können Sie Verkettung von Filtern mit Where-Object über die Eigenschaften jedes Treibers.
Wenn Sie beispielsweise nur die Treiber für IntelSie könnten etwas so Einfaches tun wie:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion | Where-Object { $_.DeviceName -like "*Intel*" }
Dieser Befehl durchläuft alle von WMI zurückgegebenen Einträge und Es werden nur diejenigen Geräte verwaltet, deren Gerätename die Zeichenkette "Intel" enthält.Durch die Verwendung des Sternchens als Platzhalter können Sie nach Teilübereinstimmungen an beliebiger Stelle im Text suchen.
Das gleiche Prinzip lässt sich nutzen, um Treiber für eine bestimmte Anwendung oder einen bestimmten Hardwaretyp zu finden, beispielsweise für USB-Treiber aktualisierenWenn Sie einen Teil des Namens, den Hersteller oder ein bestimmtes Routenmuster kennen, können Sie Passen Sie den Filter an die für Sie angenehmste Eigenschaft an. in jedem Fall.
Treiber können über den Geräte-Manager und andere Windows-Tools angezeigt werden.
Obwohl PowerShell sehr leistungsstark für die Automatisierung und den Export von Listen ist, bietet Windows dennoch ähnliche Funktionen. klassische grafische Werkzeuge zur Verwaltung von Controllern welche bekannt sein sollten und mit dem Befehlspfad kombiniert werden müssen.
Der erste Bezugspunkt ist der Geräte-ManagerSie können diese Option aufrufen, indem Sie mit der rechten Maustaste auf „Dieser PC“ klicken und „Verwalten“ auswählen, oder schneller über das Kontextmenü der Startschaltfläche (Windows + X). Dort sehen Sie eine Baumstruktur mit allen auf dem System installierten Hardwarekategorien.
Geräte mit Installations- oder Betriebsproblemen treten häufig auf bei ein gelbes WarnsymbolDurch Doppelklicken auf eines der Geräte öffnet sich das Eigenschaftenfenster, in dem Sie den Gerätestatus überprüfen und auf die Registerkarte „Treiber“ zugreifen können.
In diesem Reiter finden Sie Optionen wie beispielsweise "Treiberdetails", "Treiber aktualisieren", "Treiber zurücksetzen", "Deaktivieren" oder "Deinstallieren"Mithilfe dieser Aktionen können Sie die Treiberdateien anzeigen, nach neuen Versionen suchen, zu einer früheren Version zurückkehren, das Gerät deaktivieren, ohne es zu entfernen, oder den Treiber vollständig vom System entfernen.
Zusätzlich zu diesen Werkzeugen enthält Windows den Befehl driverquery um von der Eingabeaufforderung (CMD). Läuft driverquery Sie erhalten eine Liste aller installierten Treiber, und mit driverquery /v Sie sehen detailliertere Informationen, wie z. B. Speichernutzung, Erstellungsdatum oder Status.
driverquery und seine Beziehung zu PowerShell
Der Befehl driverquery ist sehr flexibel und ermöglicht Folgendes: Verschiedene Ansichten des Fahrerstatus anzeigenWenn Sie beispielsweise nur signierte Treiber detaillierter auflisten möchten, können Sie Folgendes ausführen:
driverquery /si
Dieser Modus zeigt Fahrer mit zusätzlichen nützlichen Informationen für Sicherheitsaudits oder Integritätsprüfungen. Und Sie können sich jederzeit beraten lassen. driverquery /? Alle verfügbaren Parameter anzeigen und die Ausgabe an Ihre Bedürfnisse anpassen.
Einer der Vorteile von driverquery ist, dass Sie können es mithilfe von ConvertFrom-CSV in PowerShell integrieren.Wenn Sie die Ausgabe im CSV-Format generieren und per Pipe weiterleiten, erhalten Sie Objekte, die Sie mit PowerShell bearbeiten können. Ein typisches Beispiel wäre:
driverquery.exe /v /fo csv | ConvertFrom-CSV | Select-Object "Display Name", "Start Mode", "Paged Pool(bytes)", Path
Damit kombinieren Sie Die Leistungsfähigkeit von driverquery mit PowerShell-DatenmanipulationWählen Sie nur die Spalten aus, die Sie interessieren: Anzeigename, Startmodus, Auslagerungsspeicher und Treiberpfad auf der Festplatte. Dies ist nützlich, wenn Sie nach bestimmten Typen filtern möchten, z. B. Grafiktreiber.
Es ist zu beachten, dass sich sowohl driverquery als auch bestimmte Standard-WMI-Abfragen primär auf Folgendes konzentrieren: im System registrierte Fahrer, viele von ihnen wurden in die Starten oder über die Registrierung unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services verwaltet. Einige Treiber, die zur Laufzeit dynamisch eingebunden werden, erscheinen möglicherweise nicht in diesen Listen.
Treiber mit Get-WindowsDriver über PowerShell auflisten
Für komplexere Szenarien, insbesondere bei der Arbeit mit Windows Offline-Images (zum Beispiel bei eingebundenen WIM-Dateien) ist das Cmdlet sehr nützlich. Get-WindowsDriver, das Teil der DISM-Tools ist, die über PowerShell zugänglich sind.
Dieses Cmdlet ermöglicht die Anzeige von Informationen zu Treiberpaketen sowohl für die laufende Windows-Installation als auch für ein in einem Ordner eingebundenes Image. Die Hauptsyntax ist in zwei Hauptverwendungsmodi unterteilt: offline und online.
Für ein Offline-Image in einem Ordner eingebundenDie allgemeine Form wäre:
Get-WindowsDriver -Path "C:\offline"
Und um gegen das laufende System vorzugehen, würden Sie den Parameter verwenden. -Online:
Get-WindowsDriver -Online
Ohne zusätzliche Parameter, Get-WindowsDriver Gibt die Liste der Drittanbietertreiber zurück Im Bild vorhanden. Wenn Sie den Modifikator hinzufügen. -AlleAußerdem sind in Windows standardmäßig Treiber enthalten.
Wichtige Parameter von Get-WindowsDriver
Einer der wichtigsten Parameter ist -Treiberwodurch Sie Folgendes festlegen können eine bestimmte .inf-Datei oder ein Ordner mit .inf-Dateien Um detaillierte Informationen zu diesen Treibern zu erhalten. Wenn Sie einen Ordner angeben, werden .inf-Dateien, die keine gültigen Treiberpakete sind, automatisch ignoriert.
Wenn Sie mit einem Offline-Image arbeiten, ist der Parameter -Path Gibt den Stammverzeichnispfad des eingebundenen Images an. Befindet sich der Windows-Ordner nicht direkt im Stammverzeichnis, können Sie Folgendes verwenden: -Windows-Verzeichnis um den relativen Unterordner anzugeben, in dem es sich befindet.
Parameter -Systemlaufwerk Es wird in spezifischeren Szenarien verwendet, beispielsweise bei der Arbeit mit Windows PE, wenn sich der Bootmanager auf einer anderen Partition befindet. In diesen Fällen dient es dazu, das Laufwerk anzugeben, das die BootMgr-Dateien enthält und verwendet werden soll.
Bezüglich des Aktivitätsprotokolls, der Parameter -LogPath Hiermit können Sie den vollständigen Pfad zur Protokolldatei festlegen. Wenn Sie ihn nicht anpassen, wird der Standardpfad verwendet. %WINDIR%\Logs\Dism\dism.logoder, in Windows PE, der temporäre Speicherplatz im RAM. In der Zwischenzeit -LogLevel Bestimmt den Ausführlichkeitsgrad des Protokolls, wobei die Werte von reinen Fehlern bis hin zur Einbeziehung von Debugging-Informationen reichen.
Schließlich der Parameter -Scratch-Verzeichnis Dies ist der temporäre Ordner, in den Dateien während des Servicevorgangs extrahiert werden. Es muss sich um einen lokalen Pfad handeln, und sobald der Vorgang abgeschlossen ist, wird er gelöscht. temporäre Dateien Sie werden automatisch entfernt, sodass keine Rückstände zurückbleiben.
Praktische Beispiele mit Get-WindowsDriver
Um schnell alle Treiber für Ihre aktuelle Windows-Installation anzuzeigen, können Sie folgenden Befehl ausführen:
Get-WindowsDriver -Online -All
Dieser Befehl wird angezeigt alle Treiber (sowohl System- als auch Drittanbietertreiber) Im laufenden Systemabbild vorhanden. Es ist eine sehr direkte Möglichkeit, die installierten Pakete anzuzeigen, ohne WMI oder den Geräte-Manager zu verwenden.
Wenn Sie mit einem arbeiten Image in C:\offline eingebunden Und wenn Sie nur Treiber von Drittanbietern überprüfen möchten, können Sie Folgendes tun:
Get-WindowsDriver -Path "C:\offline"
Wenn Sie einen detaillierten Bericht über einen bestimmten OEM-Treiber innerhalb dieses Images wünschen, geben Sie einfach die .inf-Datei an:
Get-WindowsDriver -Path "C:\offline" -Driver "OEM1.inf"
Sie können sogar auf eine .inf-Datei zugreifen, die sich in einem bestimmten Treiberpfad befindet, zum Beispiel:
Get-WindowsDriver -Path "C:\offline" -Driver "C:\drivers\Usb\Usb.inf"
Und todos estos casos, Get-WindowsDriver gibt Objekte zurück Diese können Sie an Select-Object, Where-Object oder Export-CSV weiterleiten, um die Informationen zu filtern, zu sortieren oder in das für Sie am besten geeignete Format zu exportieren.
PowerShell und SCCM: Get-CMDriver für Treiberkataloge
Wenn Sie ein Unternehmensumfeld leiten mit Konfigurationsmanager (SCCM)Sie interessieren sich nicht nur für die Treiber auf den einzelnen Computern, sondern auch für den zentralen Treiberkatalog, den SCCM für die Bereitstellung von Images und Paketen verwaltet.
In diesem Zusammenhang kommt das Cmdlet zum Einsatz. Get-CMDriver, was dazu dient Informationen aus Gerätetreibern abrufen, die vom Configuration Manager verwaltet werdenDieses Cmdlet verfügt über mehrere Signaturen, je nachdem, wonach Sie abfragen möchten: nach Name, nach numerischer Kennung, nach Treiberpaket oder nach administrativer Kategorie.
Die grundlegende Syntax umfasst Varianten wie:
Get-CMDriver
Get-CMDriver -DriverPackageId <String>
Get-CMDriver -DriverPackageName <String>
Get-CMDriver -Id <Int32>
Get-CMDriver -InputObject <IResultObject>
Mit diesen Parametern können Sie Ihre Abfragen an den SCCM-Katalog richten und nach folgenden Kriterien filtern: Treibername, Kennung, zugehörige Pakete oder administrative Kategorien die Sie zur Organisation Ihrer Controller definiert haben.
Beispiele mit Get-CMDriver
Wenn Sie den Namen eines bestimmten Treibers kennen, zum Beispiel „Surface Serial Hub Driver“, können Sie dessen Details wie folgt abrufen:
Get-CMDriver -Name "Surface Serial Hub Driver"
Wenn Sie mehrere Treiber überprüfen müssen, die das gleiche Präfix in ihrem Namen haben (wie die gesamte Surface-Treiberfamilie) und nur einige relevante Eigenschaften anzeigen möchten, können Sie beispielsweise Folgendes verwenden:
Get-CMDriver -Fast -Name "Surface*" | Select-Object LocalizedDisplayName, DriverVersion, DriverDate
Der Modifikator -Schnell Dadurch wird die Menge der abgerufenen Informationen reduziert und die Abfrage beschleunigt, was sich insbesondere bei großen Katalogen deutlich bemerkbar macht. Anschließend wird mit Select-Object Sie behalten nur die Spalten, die für Sie nützlich sind. für Ihre Analyse.
Wenn Sie administrative Kategorien verwalten (z. B. eine Kategorie „Oberfläche“, in der Sie alle diese Controller gruppieren), können Sie die Abrufe von Kategorien und Treibern wie folgt verketten:
$category = Get-CMCategory -Name "Surface"
Get-CMDriver -Fast -AdministrativeCategory $category
In diesem Fall speichern Sie zuerst die Kategorie in einer Variablen und fordern sie dann von Get-CMDriver zurück. alle Controller, die dieser Kategorie zugeordnet sind, etwas sehr Nützliches für die Pflege logischer Ansichten Ihrer Controller in SCCM.
Einschränkungen beim Auflisten dynamisch geladener Treiber
Nicht alle Treiber verhalten sich gleich. Es gibt Hilfsmittel, wie beispielsweise einige in der Suite. Sysinternals (zum Beispiel Process Explorer oder handle.exe)die Treiber dynamisch in den Kernel einbinden, wenn sie ausgeführt werden, ohne sie als herkömmliche Dienste beim Systemstart zu registrieren.
Ein typisches Beispiel ist der Fahrer procexp152.sys (oder frühere Versionen wie procexp113.sys), die mit dem Prozess-Explorer verknüpft sind. Dieser Treibertyp wird möglicherweise nicht in Standardabfragen angezeigt. Get-WmiObject Win32_SystemDriverda diese Abfragen auf Informationen aus den Registry-Diensten (CurrentControlSet\Services) basieren und in der Regel hauptsächlich Treiber widerspiegeln, die mit dem System geladen werden.
Ebenso driverquery listet möglicherweise nicht alle dynamisch injizierten Treiber auf.Wenn Sie also BSODs oder anomales Verhalten debuggen, das durch Drittanbieter-Tools verursacht wird, die ihre eigenen Treiber laden, müssen Sie möglicherweise auf andere Methoden zurückgreifen.
Zu diesen Alternativen gehören: untersuchen Speicherauszüge des Kernels mit Tools wie WinDbg oder verwenden Sie Hilfsprogramme wie verifier.exeMit dem Treiberüberprüfer können Sie die zu überwachenden Treiber auswählen und instabiles Verhalten erkennen. Die grafische Benutzeroberfläche bietet jedoch mehr Enumerationsoptionen als die Befehlszeilenversion, die sich auf Abfragen und die Konfiguration der Überprüfung konzentriert.
Kurz gesagt, für eine allgemeine Bestandsaufnahme und für die meisten administrativen Bedürfnisse, PowerShell, WMI und Get-WindowsDriver decken die Grundlagen sehr gut ab.In extremen Fällen der Fehlersuche bei Hot-Loading-Treibern ist jedoch der Einsatz von Kernel-Analysewerkzeugen erforderlich.
Treiber mit PowerShell mithilfe von PSWindowsUpdate aktualisieren
Neben der Auflistung von Treibern verwenden viele Administratoren PowerShell, um Automatisieren von Treiberaktualisierungen über Windows Update und auch für Soundtreiber aktualisierenEine häufig verwendete Methode ist die Verwendung des PSWindowsUpdate-Moduls, das die Standard-Update-Cmdlets erweitert.
Der übliche Materialfluss läuft durch Die Ausführung signierter Skripte vorübergehend ermöglichenInstallieren Sie das Modul und fordern Sie anschließend Treiberaktualisierungen direkt von den Microsoft-Servern an.
Ein typischer Befehlssatz könnte lauten:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Install-Module PSWindowsUpdate
Import-Module PSWindowsUpdate
Get-WindowsUpdate
Get-WindowsUpdate -MicrosoftUpdate -Category Driver -Install -AutoReboot
Diese Sequenz ermöglicht die Skriptausführung für die aktuelle Sitzung und installiert und importiert das PSWindowsUpdate-Modul. Prüfen Sie, welche Updates verfügbar sind. Und schließlich fordern Sie an, dass sie über Microsoft Update aus der Kategorie „Treiber“ installiert werden, wodurch das System bei Bedarf automatisch neu gestartet werden kann.
Sie können den Umfang auch erweitern, indem Sie einen Befehl verwenden, der alle von Microsoft Update erkannten Updates installiert und den Computer ohne Eingriff neu startet, zum Beispiel:
Get-WindowsUpdate -MicrosoftUpdate -Install -AutoReboot
Diese Arbeitsweise ist besonders praktisch in große MannschaftsparksHier bietet es sich an, Treiberversionen zu standardisieren, ohne jede Version einzeln zu aktualisieren. Es empfiehlt sich jedoch, dies mit einem gut vorhandenen Treiberinventar zu kombinieren und in kritischen Umgebungen vor der unternehmensweiten Bereitstellung Tests in einer Pilotgruppe durchzuführen.
Leidenschaftlicher Autor über die Welt der Bytes und der Technologie im Allgemeinen. Ich liebe es, mein Wissen durch Schreiben zu teilen, und genau das werde ich in diesem Blog tun und Ihnen die interessantesten Dinge über Gadgets, Software, Hardware, technologische Trends und mehr zeigen. Mein Ziel ist es, Ihnen dabei zu helfen, sich auf einfache und unterhaltsame Weise in der digitalen Welt zurechtzufinden.
