我編寫了一個名爲Invoke-InstallDrivers(Link to Github)的函數,該函數用於將驅動程序文件的GUID與已安裝硬件的GUID進行比較,如果安裝的匹配項匹配,如果沒有它將跳過的匹配項。我修改了這個函數來拉取你正在查找的數據,但是,我發現你指定位置的幾個.INF文件沒有包含「製造商」值,所以我添加了一些邏輯來說明重新沒有價值。最後,我沒有在我的測試工作站上的任何位於該路徑的inf文件中看到任何DeviceID字段,所以我認爲您所指的是ClassGUID。
Function Get-DriverInfo {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[String[]] $Source
)
$Drivers = Get-ChildItem -Path "$Source\*" -Recurse | Where {$_.Extension -eq ".inf"} | Select -ExpandProperty FullName
Foreach ($Driver in $Drivers)
{
Write-Output "Processing File: $Driver"
$GUID = (Get-Content -Path "$Driver" | Select-String "ClassGuid").Line.Split('=')[-1].Split(' ').Split(';')
$Version = (Get-Content -Path "$Driver" | Select-String "DriverVer").Line.Split('=')[-1].Split(' ').Split(';')
if ((Get-Content -Path "$Driver" | Select-String "MfgName") -eq $null)
{
$Manufacturer = "No Manufactuer Listed in INF"
}
ELSE
{
$Manufacturer = (Get-Content -Path "$Driver" | Select-String "MfgName").Line.Split('=')[-1].Split(' ').Split(';')
}
Write-Output "$Manufacturer, $Version, $GUID"
}
}
您將通過運行使用上述功能:
Get-DriverInfo -Source "C:\Windows\System32\DriverStore\FileRepository"
您可能需要調整輸出格式,以您的喜好,但是這應該讓你在正確的道路,以解決您的問題上。
編輯 思想我想補充的輸出將是什麼樣子,第一部分顯示了製造商和其他節目INF無製造商(路徑被縮短了可讀性):
PS C:\> Get-DriverInfo -Source "C:\Windows\System32\DriverStore\FileRepository"
Processing File: C:\Windows\System32\DriverStore\FileRepository\...\bcbtumsLD.inf
"Broadcom", 09/25/2013,6.5.1.4800, {e0cbf06c-cd8b-4647-bb8a-263b43f0f974}
Processing File: C:\Windows\System32\DriverStore\FileRepositor\...\bcmhidnossr.inf
No Manufactuer Listed in INF, 03/28/2013,1.0.0.101, {745a17a0-74d3-11d0-b6fe-00a0c90f57da}
希望這有助於!
很酷,但不適合。 (我想如果不是製造商,請跳過結果關於GUID,我的意思是model。例如Manufacter =「HP」,Model =「HP Photosmart 2570」或「HP Color LaserJet 2820」(不要緊)DriverVer =「 6.1.7600.16385「 –
聽起來像是你要求的東西是不可能的,除了我上面輸出中列出的版本和製造商之外,你將無法得到任何不同的結果,最後模型通常不在驅動程序中安裝文件(inf),因爲驅動程序可以應用到一系列廣泛的硬件上,你可以使用notepad ++或類似的東西打開inf文件,看看它們包含的信息,不能得到那些不存在的信息 –
準確!需要* .inf中的所有模型。最後製作一個表格,列出製造商,所有可能的型號和驅動程序版本。 –