Windows Driverstore mittels Powershell auslesen


Seit Windows Vista gibt es den sogenannten Windows Driverstore. Im Windows Driverstore sind alle Treiber welche Windows mitbringt verzeichnet. http://msdn.microsoft.com/en-us/library/windows/hardware/ff544868(v=vs.85).aspx

Man kann die enthaltenen Treiber mittels DISM auslesen (als Admin):

dism /online /get-drivers /all /format:Table

Dabei bekommt man eine Liste wie diese

Tool zur Abbildverwaltung für die Bereitstellung
Version: 6.1.7600.16385

Abbildversion: 6.1.7600.16385

Liste aller Treiber wird aus dem Treiberspeicher abgerufen…

Treiberpaketauflistung:

———————————- | ———————————- | ————– | ———————- | —
——————————————————– | ———- | —————-
Veröffentlichter Name              | Originaldateiname                  | Windows-intern | Klassenname            | Anb
ietername                                                | Datum      | Version
———————————- | ———————————- | ————– | ———————- | —
——————————————————– | ———- | —————-
1394.inf                           | 1394.inf                           | Ja             | 1394                   | Mic
rosoft                                                   | 21.06.2006 | 6.1.7601.17514
61883.inf                          | 61883.inf                          | Ja             | 61883                  | Mic
rosoft                                                   | 21.06.2006 | 6.1.7600.16385
acpi.inf                           | acpi.inf                           | Ja             | System                 | Mic
rosoft                                                   | 21.06.2006 | 6.1.7601.17514
acpipmi.inf                        | acpipmi.inf                        | Ja             | System                 | Mic
rosoft                                                   | 21.06.2006 | 6.1.7601.17514
adp94xx.inf                        | adp94xx.inf                        | Ja             | SCSIAdapter            | Ada
ptec                                                     | 11.11.2008 | 1.6.6.4
adpahci.inf                        | adpahci.inf                        | Ja             | SCSIAdapter            | Ada
ptec                                                     | 27.04.2007 | 1.6.6.2
adpu320.inf                        | adpu320.inf                        | Ja             | SCSIAdapter            | Ada
ptec                                                     | 25.01.2007 | 7.2.0.0

sieht nicht schön aus, aber hat Gehalt.

Ok, aber wir bewegen uns in der Powershell-Welt, wie siehts da aus? Leider bringt erst Windows 8 DISM-Cmdlets mit. Aber mittels Piping kann man DISM zur Mitarbeit überreden:

$ds=dism /online /get-drivers /all /format:Table

ließt zunächst die ganze Tabelle in die Variable $ds ein. Die spannenden Teile bekommt man mittels

$ds[14..($ds-length-4)]

ausgegeben.

Mittels dieser Zeile bekommt man alles schön brav als Powershell-Objekte präsentiert:

$di=$ds[14..($ds.length-4)]|foreach {$f=$_.Split("|"); new-object -typename psobject -Property  @{PublishedName=$f[0];OriginalFileName=$f[1];Inbox=$f[2];ClassName=$f[3];ProviderName=$f[4];Date=Get-Date($f[5]);Version=$f[6]} }

Nun kann man die üblichen Powershell-Spielchen bringen wie z. B. die Ausgabe in einer Tabelle:

$di | out-gridview

Hier eine Übersicht der einzelnen Treiber je Klasse:

$di | group -property Classname | select count, name

Oder Ausgabe aller Druckertreiber:

$di | where {$_.Classname -eq "Printer"}

Oder die Druckertreiber eines Herstellers wie HP:

$di | where {$_.Classname -eq "Printer" -and $_.Providername -match "HP"}

Was zur Ausgabe

Date             : 29.10.2010 00:00:00
Version          : 61.109.9.8874
PublishedName    : oem5.inf
OriginalFileName : hpcu109u.inf
ProviderName     : HP
ClassName        : Printer
Inbox            : Nein

Date             : 21.06.2006 00:00:00
Version          : 6.1.7600.16385
PublishedName    : prnhp002.inf
OriginalFileName : prnhp002.inf
ProviderName     : HP
ClassName        : Printer
Inbox            : Ja

Date             : 21.06.2006 00:00:00
Version          : 6.1.7600.16385
PublishedName    : prnhp003.inf
OriginalFileName : prnhp003.inf
ProviderName     : HP
ClassName        : Printer
Inbox            : Ja

Date             : 21.06.2006 00:00:00
Version          : 6.1.7600.16385
PublishedName    : prnhp004.inf
OriginalFileName : prnhp004.inf
ProviderName     : HP
ClassName        : Printer
Inbox            : Ja

Date             : 21.06.2006 00:00:00
Version          : 6.1.7600.16385
PublishedName    : prnhp005.inf
OriginalFileName : prnhp005.inf
ProviderName     : HP
ClassName        : Printer
Inbox            : Ja

hat.

Moment hier tauchen nur fünf Treiber auf? Komisch oder?

Aber kein Problem es gibt einen weiteren DISM-Befehl der weitere Infos zutage fördert:

dism /online /get-driverinfo /driver:prnhp005.inf

Mittels diesem erhält man weitere Treiberinformationen:

Tool zur Abbildverwaltung für die Bereitstellung
Version: 6.1.7600.16385

Abbildversion: 6.1.7600.16385

Treiberpaketinformationen:

Veröffentlichter Name : prnhp005.inf
Treiberspeicherpfad : C:\Windows\System32\DriverStore\FileRepository\prnhp005.inf_amd64_neutral_914d6c300207814f\prnhp00
5.inf
Klassenname : Printer
Klassenbeschreibung : Drucker
Klassen-GUID : {4D36E979-E325-11CE-BFC1-08002BE10318}
Datum : 21.06.2006
Version : 6.1.7600.16385
Für den Start erforderlich : Nein

Treiber für Architektur : amd64

    Hersteller : HP
    Beschreibung : HP Photosmart C309a series
    Architektur : amd64
    Hardware-ID : HPPhotosmart_C309a_s277D
    Dienstname :
    Kompatible IDs : HP_Photosmart_C309a_series
    Ausschluss-IDs :

    Hersteller : HP
    Beschreibung : HP Photosmart C309a series BT
    Architektur : amd64
    Hardware-ID : HPPhotosmart_C309a_sA58A
    Dienstname :
    Kompatible IDs : HP_Photosmart_C309a_series_BT
    Ausschluss-IDs :

    Hersteller : HP
    Beschreibung : HP Officejet Pro 8000 A809 Series
    Architektur : amd64
    Hardware-ID : HPOfficejet_Pro_8000e3dd
    Dienstname :
    Kompatible IDs : HP_Officejet_Pro_8000_A809_Series
    Ausschluss-IDs :

    Hersteller : HP
    Beschreibung : HP Officejet Pro 8500 A909n Series
    Architektur : amd64
    Hardware-ID : HPOfficejet_Pro_8500e33c
    Dienstname :
    Kompatible IDs : HP_Officejet_Pro_8500_A909n_Series
    Ausschluss-IDs :

    Hersteller : HP
    Beschreibung : HP Officejet Pro 8500 A909g Series
    Architektur : amd64
    Hardware-ID : HPOfficejet_Pro_8500e5fc
    Dienstname :
    Kompatible IDs : HP_Officejet_Pro_8500_A909g_Series
    Ausschluss-IDs :

    Hersteller : HP
    Beschreibung : HP Officejet Pro 8500 A909a Series
    Architektur : amd64
    Hardware-ID : HPOfficejet_Pro_8500e77c
    Dienstname :
    Kompatible IDs : HP_Officejet_Pro_8500_A909a_Series
    Ausschluss-IDs :

    Hersteller : HP
    Beschreibung : HP Officejet Pro 8500 A909n Series BT
    Architektur : amd64
    Hardware-ID : HPOfficejet_Pro_85007188
    Dienstname :
    Kompatible IDs : HP_Officejet_Pro_8500_A909n_Series_BT
    Ausschluss-IDs :

    Hersteller : HP
    Beschreibung : HP Officejet Pro 8500 A909g Series BT
    Architektur : amd64
    Hardware-ID : HPOfficejet_Pro_8500ed8b
    Dienstname :
    Kompatible IDs : HP_Officejet_Pro_8500_A909g_Series_BT
    Ausschluss-IDs :

    Hersteller : HP
    Beschreibung : HP Officejet Pro 8500 A909a Series BT
    Architektur : amd64
    Hardware-ID : HPOfficejet_Pro_8500658b
    Dienstname :
    Kompatible IDs : HP_Officejet_Pro_8500_A909a_Series_BT
    Ausschluss-IDs :

    Hersteller : HP
    Beschreibung : HP Officejet 6500 E709n Series
    Architektur : amd64
    Hardware-ID : HPOfficejet_6500_E70e4a2
    Dienstname :
    Kompatible IDs : HP_Officejet_6500_E709n_Series
    Ausschluss-IDs :

    Hersteller : HP
    Beschreibung : HP Officejet 6500 E709a Series
    Architektur : amd64
    Hardware-ID : HPOfficejet_6500_E70e0e2
    Dienstname :
    Kompatible IDs : HP_Officejet_6500_E709a_Series
    Ausschluss-IDs :

    Hersteller : HP
    Beschreibung : HP Officejet 6000 E609a Series
    Architektur : amd64
    Hardware-ID : HPOfficejet_6000_E604cdc
    Dienstname :
    Kompatible IDs : HP_Officejet_6000_E609a_Series
    Ausschluss-IDs :

    Hersteller : HP
    Beschreibung : HP Officejet 6000 E609n Series
    Architektur : amd64
    Hardware-ID : HPOfficejet_6000_E60489c
    Dienstname :
    Kompatible IDs : HP_Officejet_6000_E609n_Series
    Ausschluss-IDs :

    Hersteller : HP
    Beschreibung : HP Deskjet F4400 series
    Architektur : amd64
    Hardware-ID : HPDeskjet_F4400_seri4818
    Dienstname :
    Kompatible IDs : HP_Deskjet_F4400_series
    Ausschluss-IDs :

    Hersteller : HP
    Beschreibung : HP Photosmart C4600 series
    Architektur : amd64
    Hardware-ID : HPPhotosmart_C4600_sEC29
    Dienstname :
    Kompatible IDs : HP_Photosmart_C4600_series
    Ausschluss-IDs :

    Hersteller : HP
    Beschreibung : HP Deskjet D2600 series
    Architektur : amd64
    Hardware-ID : HPDeskjet_D2600_seri56FC
    Dienstname :
    Kompatible IDs : HP_Deskjet_D2600_series
    Ausschluss-IDs :

Der Vorgang wurde erfolgreich beendet.

Hier kann man nun den einzelnen Druckernamen erkennen.

Diese Druckerinfos kann man wieder in einer Variable einlesen:

$pd=dism /online /get-driverinfo /driver:prnhp005.inf

und natürlich wieder in Powershell-Objekte übertragen:

$pdl=$pd|select-string -Context 7 -Pattern Hersteller

Sorry aus Zeitmangel überlasse ich es jedem selber hier die sinnvollen Informationen auszulesen.

Hier noch zwei Blogeinträge passend zum Thema, wo mittels Excel eine Übersicht über enthaltene Treiber im Driverstore geliefert werden: http://www.verboon.info/index.php/2010/12/inside-the-windows-7-driver-store/ und http://www.verboon.info/index.php/2011/01/inside-the-windows-7-driver-storepart-2/.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s


%d Bloggern gefällt das: