Назад | Перейти на главную страницу

Получить версию драйвера устройства и связанный GUID с помощью PowerShell?

Сейчас я получаю два отдельных объекта

  1. Объект WMI Win32_NetworkAdapter
  2. Объект Win32_PnpSignedDriver WMI

В своих предыдущих сценариях я убедился, что вызываю отдельные объекты и связываю их с помощью GUID.

     $mydev = Get-WmiObject -class Win32_NetworkAdapter | Where-Object {$_.pnpdeviceid -like "*VEN_0000&DEV_00AA*"}

     If ($mydev.GUID -eq $relatedobj.ParentID)
     {
         action
     }

Но нет GUID / ParentID / etc. свойство для объекта Win32_PnpSignedDriver. Есть ли другой способ получить информацию о драйверах устройства (в частности, версию драйвера), а также получить GUID устройства? Можно ли с этим выиграть Win32_PnpSignedDriver, а я его просто не вижу?

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

Я сравниваю информацию nic так же, как и в моем исходном сообщении (с объектом Win32_NetworkAdapter WMI), но вместо этого сравниваю GUID со значением реестра. Это можно сделать, используя следующую строку, чтобы получить все ники:

    $nicreg = Get-ChildItem -path "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\" -ErrorAction SilentlyContinue

    foreach ($nic in $nicreg)
    {
        # do stuff with driver versions
    }

А затем перебираем каждую сетевую карту, сравнивая $ nic.GetValue ("NetCfgInstanceId") с $ mydev.GUID. Убедившись, что вы смотрите на нужный ник, проверив GUID, вы можете получить $ nic.GetValue ("DriverVersion") для устройства, на которое вы смотрите.