2015-06-22 2 views
0

Есть ли способ или учебные пособия, где я могу:Список связанных драйверов файлы и их версии

  1. Список всех файлов, связанных с драйвером
  2. версию списка файлов этих файлов (.exe, .dll , .sys и т. д.)

Я пытаюсь скомпилировать список всех драйверов, установленных на компьютере, и в основном перечислять все файлы, связанные с драйвером (exe, sys, dll и т. д.). наряду с файловой версией. См. Прилагаемый рисунок.

Link to picture:

Я пытался использовать Wmi-Object (Powershell) и DevCon инструмент, но может получить эти файлы должны быть перечислены.

Использование Powershell, я могу указать имя драйвера, но появляется только файл.

# Script to output all of the drivers installed in the computer 

# Export all driver names to a text file 
Get-WmiObject win32_SystemDriver | select name | foreach {$_.name} | Out-File C:\driverName.csv 

# Read driver name from file. 
$driver = Get-Content "C:\driverName.csv" 

# Get the file path of the driver 
$path = (Get-WmiObject win32_SystemDriver | Where-Object name -match $driverName).PathName 

# Extract information from the file path and export it to CSV 
(Get-Item $path).VersionInfo | Select FileDescription, ProductVersion, FileVersion, FileName | Export-Csv -Path C:\FileVersion.csv 

ответ

1

Утилита пользователя DevCon для отображения информации обо всех драйверах, установленных на компьютере.

  1. Скачать DevCon пакет из here:
  2. Разархивируйте пакет
  3. Открыть CMD в качестве администратора и смените директорию распакованного папку
  4. Run devcon.exe driverfiles *
  5. Это будет список всех драйвера, установленного в компьютер, их аппаратные ids, .inf-файл и все остальные файлы, связанные с этим конкретным драйвером.
0
Get-WmiObject -Class Win32_SystemDriver | 
Select-Object Name,PathName,@{N='FileInfo';E={Get-Item -Path $_.pathname | Select-Object -ExpandProperty VersionInfo | Select-Object FileDescription, ProductVersion, FileVersion, FileName}} | 
    Export-Clixml C:\temp\drivers.xml 

$ImportedXML = Import-Clixml -Path C:\temp\drivers.xml 

$ImportedXML | Where-Object Name -eq '3ware' | Select-Object -ExpandProperty fileinfo 

, так как информация, которую вы ищете, погребены под вложенной собственности, вы не можете экспортировать структуру в плоский файл как «CSV» также не без некоторых настроек. в любом случае лучшим вариантом будет сохранение вывода в XML-файле, как показано выше, и получение информации по мере необходимости.

+0

Спасибо! Но я пытаюсь перечислить ВСЕ файл, связанный с драйвером. – Imsa

+0

ОК, я думаю, вам нужно будет использовать devcon и проанализировать его вывод, используя регулярное выражение, которое займет некоторое время. Или экспортируйте все драйверы во временную папку, а затем перейдите в эту папку и сделайте список каждого драйвера вместе со своими файлами. – Kiran

+0

Как я могу экспортировать/архивировать все установленные драйверы в папку вместе со своими файлами? Спасибо! – Imsa

2

Вот скрипт Powershell, который делает именно то, что предлагается:

#
$hostname = $ENV:COMPUTERNAME 

# Get Third Party drivers used, that are not provided by Microsoft and presumably included in the OS 
$drivers = Get-WmiObject Win32_PNPSignedDriver | where {$_.DriverProviderName -ne "Microsoft"} 

# Initialize the list of detected driver packages as an array 
$DriverFolders = @() 
foreach ($d in $drivers) { 
    # We initialize the list of driver files for each driver 
    $DriverFiles = @() 
    # For each driver instance from WMI class Win32_PNPSignedDriver, we compose the related WMI object name from the other WMI driver class, Win32_PNPSignedDriverCIMDataFile 
    $ModifiedDeviceID = $d.DeviceID -replace "\\", "\\" 
    $Antecedent = "\\" + $hostname + "\ROOT\cimv2:Win32_PNPSignedDriver.DeviceID=""$ModifiedDeviceID""" 
    # Get all related driver files for each driver listed in WMI class Win32_PNPSignedDriver 
    $DriverFiles += Get-WmiObject Win32_PNPSignedDriverCIMDataFile | where {$_.Antecedent -eq $Antecedent} 
    $DriverName = $d.DeviceName 
    $DriverID = $d.DeviceID 
    Write-Host "####Driver files for driver with name: $DriverName" -ForegroundColor Green 
    Write-Host "and with DriverID: $DriverID" -ForegroundColor Green 
    foreach ($i in $DriverFiles) { 
      # We elliminate double backslashes from the file paths 
      $path = $i.Dependent.Split("=")[1] -replace '\\\\', '\' 
      $path2 = $path.Substring(1,$path.Length-2) 
      $InfItem = Get-Item -Path $path2 
      $Version = $InfItem.VersionInfo.FileVersion 
      Write-Output "File: $path2" 
      Write-Output "Version: $Version" 
    } 
    } 
#

Вы можете сделать гораздо больше, начиная с этого, даже извлекая все связанные файлы драйвера из них определяется как установленных и используемых системой.

Более сложную версию сценария можно найти here.

+0

Мне нравится это решение, для тех, у кого есть проблемы с его выполнением ('выполнение скриптов отключено в этой системе'), вот ответ http://stackoverflow.com/a/4038991/ – feelthhis

Смежные вопросы