Как получить объект вывода Devcon с помощью PowerShell (winpe)? - PullRequest
0 голосов
/ 29 мая 2020

Я хочу выбрать объект из вывода Devcon.exe.

PCI\VEN_8086&DEV_2822&SUBSYS_1790103C&REV_04\3&11583659&0&FA
    Name: Intel(R) Chipset SATA/PCIe RST Premium Controller
Driver node #0:
    Inf file is C:\Windows\INF\iastorav.inf
    Inf section is iaStorAVC_inst
    Driver description is Intel Chipset SATA RAID Controller
    Manufacturer name is Intel Corporation
    Provider name is Intel Corporation
    Driver date is 2/7/2018
    Driver version is 15.44.0.1010
    Driver node rank is 16711683
    Driver node flags are 00102044
        Inf is digitally signed
Driver node #1:
    Inf file is C:\Windows\INF\oem9.inf
    Inf section is iaStorAC_inst_8
    Driver description is Intel(R) Chipset SATA/PCIe RST Premium Controller
    Manufacturer name is Intel Corporation
    Provider name is Intel Corporation
    Driver date is 5/9/2019
    Driver version is 17.5.0.1017
    Driver node rank is 8388611
    Driver node flags are 00003044
        Inf is digitally signed

Я хочу получить Driver version путем сопоставления Driver description. Я пробовал этот способ, но не могу получить версию драйвера.

 $hardwareid = "PCI\VEN_8086&DEV_2822&SUBSYS_1790103C&REV_04"
 $Description = "Intel(R) Chipset SATA/PCIe RST Premium Controller"
 $DrNode = & .\devcon.exe /drivernodes "$hardwareid"             
 $Ver = $DrNode | Where-Object {$_ -like "*$Description*"} | Select-Object Driver version

Кто угодно может дать идею, пожалуйста. Очень признателен!

1 Ответ

1 голос
/ 29 мая 2020

Проблема в том, что devcon выводит текст. Как насчет того, чтобы использовать WMI?

Get-WmiObject Win32_PnPSignedDriver | 
  where description -match 'apple solid state drive device' |
  select driverversion

driverversion
-------------
6.0.6400.0

Хорошо, это сработало для меня в winpe. Я получил его здесь: https://superuser.com/questions/1438704/how-to-find-driver-version-for-all-devices-through-wmi/1438715#1438715 Он получает версию драйвера из информации о файле.

get-wmiobject Win32_SystemDriver | select DisplayName,@{n="version";
  e={(get-item $_.pathname).VersionInfo.FileVersion}} | 
  where displayname -match 'apple solid state drive'

DisplayName                    version
-----------                    -------
Apple Solid State Drive Device 6.0.6400.0
...