|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] получить список физически подключенных usb устройств |
|
PowerShell - [решено] получить список физически подключенных usb устройств
|
Старожил Сообщения: 211 |
Доброго времени суток!
Появилась нужда получить с компьютеров количество занятых usb портов физическими устройствами, т.е. не интересуют всякие виртуальные устройства и информация об концентраторах. Суть в том, чтобы посчитать сколько у компьютера осталось свободных usb портов, общее количество физических портов компьютера заведомо известно. Проблема в том, что по выводимой мне информации непонятно реальное ли это устройство. Например
Get-PnpDevice -PresentOnly |Select-Object -Property FriendlyName, class, InstanceId, HardwareID | Where-Object {$_.class -like 'USB' } FriendlyName Class InstanceId HardwareID ------------ ----- ---------- ---------- Составное USB устройство USB USB\VID_046D&PID_C068\F3292570BA0018 {USB\VID_046D&PID_C068&REV_5802, USB\VID_046D&PID_C068} Корневой USB-концентратор (USB*3.0) USB USB\ROOT_HUB30\4&7496E13&0&0 {USB\ROOT_HUB30&VID8086&PID02ED&REV0000, USB\ROOT_HUB30&VID8086&PID02ED, USB\ROOT_HUB30} Составное USB устройство USB USB\VID_046D&PID_C534\5&698CBB1&0&4 {USB\VID_046D&PID_C534&REV_2900, USB\VID_046D&PID_C534} Расширяемый хост-контроллер Intel(R) USB 3.1 — 1.10 (Майкрософт) USB PCI\VEN_8086&DEV_02ED&SUBSYS_869D103C&REV_00\3&11583659&0&A0 {PCI\VEN_8086&DEV_02ED&SUBSYS_869D103C&REV_00, PCI\VEN_8086&DEV_02ED&SUBSYS_869D103C, PCI\VEN_8086&DEV_02ED&CC_0C0330, PCI... Составное USB устройство USB USB\VID_05C8&PID_03CB\5&698CBB1&0&2 {USB\VID_05C8&PID_03CB&REV_0009, USB\VID_05C8&PID_03CB} В общем устройства в информации для меня ничем не различаются. |
|
Отправлено: 15:13, 27-10-2022 |
fascinating rhythm Сообщения: 6647
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 16:44, 27-10-2022 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Status Class FriendlyName InstanceId ------ ----- ------------ ---------- OK HIDClass USB-устройство ввода USB\VID_046D... OK HIDClass USB-устройство ввода USB\VID_046D... OK HIDClass USB-устройство ввода USB\VID_046D... OK HIDClass USB-устройство ввода USB\VID_046D... OK Camera HP HD Camera USB\VID_05C8... OK Bluetooth Intel(R) Wireless Bluetooth(R) USB\VID_8087... Я понимаю, что в моем случае все усложняется тем, что у меня ноут и видимо некоторые устройства почему-то usb, но на самом деле они внутри корпуса. Опрашиваться будут в основном системные блоки где такого должно быть меньше или вообще не должно быть. Заметил, что многие устройства при подключении генерируют две записи, на примере включена только мышь, пока встроенные устройства я не принимаю во внимание, так как на системниках таких быть не должно пример
Get-PnpDevice -PresentOnly |Select-Object -Property status, FriendlyName, class, InstanceId | Where-Object { $_.InstanceId -match '^USB' -and $_.class -ne 'USB'} status FriendlyName Class InstanceId ------ ------------ ----- ---------- OK USB-устройство ввода HIDClass USB\VID_046D&PID_C534&MI_00\6&24087896&0&0000 OK USB-устройство ввода HIDClass USB\VID_046D&PID_C534&MI_01\6&24087896&0&0001 OK HP HD Camera Camera USB\VID_05C8&PID_03CB&MI_00\6&242F741B&0&0000 OK Intel(R) Wireless Bluetooth(R) Bluetooth USB\VID_8087&PID_0026\5&698CBB1&0&10 Осталось как-то считать две записи одним устройством, но опять же не все устройства генерируют по две записи.. |
|
Последний раз редактировалось Griboed0ff, 27-10-2022 в 19:12. Отправлено: 17:55, 27-10-2022 | #3 |
fascinating rhythm Сообщения: 6647
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
Цитата Griboed0ff:
Тут тоже вопрос - а если подключено два одинаковых устройства, создающих две записи? Может быть, надо выбрать другой критерий объединения, экспериментируйте. |
||
------- Последний раз редактировалось DJ Mogarych, 27-10-2022 в 21:03. Отправлено: 20:53, 27-10-2022 | #4 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Status Class FriendlyName InstanceId ------ ----- ------------ ---------- OK Camera HP HD Camera USB\VID_05C8... OK Bluetooth Intel(R) Wireless Bluetooth(R) USB\VID_8087... сейчас вопрос состоит в том как сравнить значения одного устройства: и принять это за одно значение. Тут различия только в 0 и 1. Смотрел в сторону Compare-Object, но пока не смог применить его к своей ситуации. |
||
Отправлено: 23:51, 27-10-2022 | #5 |
Старожил Сообщения: 327
|
Профиль | Отправить PM | Цитировать Griboed0ff, не знаю, поможет вам или нет - я использую утилиту UsbTreeView. Так-то она экранная, но с ключом -R пишет вывод текстовый файл. Вроде, и в xml может.
|
Отправлено: 03:37, 28-10-2022 | #6 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата sonny362:
|
|
Отправлено: 09:28, 28-10-2022 | #7 |
fascinating rhythm Сообщения: 6647
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
|
|
------- Отправлено: 09:58, 28-10-2022 | #8 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Мне нужно было получить значения именно через gwmi, получилось два варианта:
gwmi Win32_USBControllerDevice |%{[wmi]($_.Dependent)} | select Caption, PNPClass, deviceid | ? { $_.deviceid -match '^USB' -and $_.PNPClass -ne 'USB'}|sort {$_.deviceid -replace '.*&(PID_.+?)&.*','$1'} -Unique |
Отправлено: 16:45, 28-10-2022 | #9 |
fascinating rhythm Сообщения: 6647
|
Профиль | Отправить PM | Цитировать Кстати, лучше фильтровать результаты как можно раньше, т. е., сначала надо where, а потом select.
Здесь это, может, не очень существенно, но в целом надо применять filter left technique, т. е., как можно раньше отбрасывать ненужное, чтобы не тащить лишние данные между процессами обработки. Также, фильтры бывают уже и в самом командлете, например, можно instanceID отобрать, не перебрасывая через пайп. Ранняя фильтрация ускоряет обработку, иногда кардинально. |
------- Отправлено: 20:57, 28-10-2022 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Как узнать IP адреса, подключенных устройств к точке доступа wi-fi на Windows 7? | alex2887 | Хочу все знать | 1 | 24-01-2020 21:59 | |
2012 R2 - Мониторинг (список) подключенных компьютеров к AD | Igor Potapov | Windows Server 2012/2012 R2 | 3 | 21-11-2016 19:00 | |
Любой язык - [решено] посмотреть список(количество) подключенных к терминальному серверу | Опиум | Скриптовые языки администрирования Windows | 2 | 28-03-2014 11:40 | |
Разное - Принудительное определение подключенных USB устройств | _Unknown_ | Microsoft Windows 2000/XP | 2 | 30-06-2011 07:22 | |
[решено] Проблема с сетевухой,её физически нет,но она в диспетчере устройств(скрытая),как её у | DreDo | Непонятные проблемы с Железом | 1 | 06-01-2009 12:24 |
|