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/.