Возможно ли для VBScript проверить, находится ли определенное устройство в диспетчере устройств?

337
Matthew Wai

В моем диспетчере устройств есть «Realtek USB FE Family Controller». После того, как компьютер выходит из спящего режима, иногда контроллер не может быть распознан, и для его распознавания необходимо запустить TK_NIC_DRIVER_INSTALLER.sfx.exe.

Возможно ли для VBScript проверить наличие контроллера? Если его там нет, будет выполнена следующая команда.

CreateObject("wscript.shell").run("""C:\RTK_NIC_DRIVER_INSTALLER.sfx.exe"""),0 
1
Зачем вам нужно использовать VBScript, технологию середины 1990-х годов для этого. Почему бы не использовать PowerShell и командлет `Get-PnpDevice`? Peter Hahndorf 6 лет назад 1
Я хочу VBScript, потому что он не будет вызывать командное окно, и я не знаю, как использовать PowerShell. Matthew Wai 6 лет назад 0
Похоже (по крайней мере, в теории), что это должно быть возможно. Поиск в Google не выявил прямого способа запроса элементов в диспетчере устройств (хотя он мог бы быть), но кажется, что вы можете получить список элементов с помощью VBScript (так что вы можете потенциально сравнить имена / информацию и посмотреть, есть ли в списке устройство). или нет). Базовые подходы, по-видимому, либо используют интерфейсы WMI для VBScript напрямую для получения элементов, либо для анализа выходных данных msinfo32.exe. Anaksunaman 6 лет назад 0

1 ответ на вопрос

0
shawn

Вы можете использовать класс WMI win32_PnPEntity. Здесь мы просто перебираем и проверяем устройства с таким описанием:

strComputer = "."  Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PnPEntity") For Each objItem In colItems If InStr(1, objItem.Description, "Realtek USB FE Family Controller", 1) > 0 Then CreateObject("wscript.shell").run("""C:\RTK_NIC_DRIVER_INSTALLER.sfx.exe"""),0 End If Next 

Если это не сработает, вам также может понадобиться проверить objItem.Present или objItem.Status

Похожие вопросы