Сейчас я получаю два отдельных объекта
В своих предыдущих сценариях я убедился, что вызываю отдельные объекты и связываю их с помощью 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") для устройства, на которое вы смотрите.