Вопрос или проблема
Кто-нибудь знает, существует ли эквивалент lspci для Windows?
lspci — это очень удобная команда Linux, которая перечисляет всю информацию о устройствах на шине pci. Она точно показывает, какие чипсеты присутствуют в видеоустройствах, сетевых и аудио. Поскольку компании, такие как Dell, позволяют выбирать из нескольких разных сетевых и видеопараметров, это действительно поможет, когда пытаетесь выяснить, как настроена система, с которой вы работаете, когда в системе отсутствуют драйверы.
Я не знаю команды, которая сделает это, но есть ряд программ, которые могут это сделать. Моя любимая — это SIW. У них есть версия для установки, а также модульная версия.
Существует, кажется, порт lspci
(и setpci
) для Windows, что замечательно.
https://eternallybored.org/misc/pciutils/
Пример для генерации журнала топологии системы с разной детализацией:
echo lspci простой список > lspci_topo.log
lspci -M -nn >> lspci_topo.log
echo. >> lspci_topo.log
echo lspci дерево >> lspci_topo.log
lspci -t -vv -nn >> lspci_topo.log
echo. >> lspci_topo.log
echo lspci детализированный список >> lspci_topo.log
lspci -M -vv -nn >> lspci_topo.log
echo. >> lspci_topo.log
echo lspci AMD и Nvidia GPU сырой hex конфиг пространство >> lspci_topo.log
lspci -mm -d 1002: -v -xxx -nn >> lspci_topo.log
lspci -mm -d 1022: -v -xxx -nn >> lspci_topo.log
lspci -mm -d 10DE: -v -xxx -nn >> lspci_topo.log
Насколько я знаю, нет способа сделать это в командной строке в Windows.
В Windows есть Windows Management Instrumentation командная строка (wmic), где вы можете перечислить процессы и некоторые аппаратные списки.
Чтобы идентифицировать аппаратные компоненты, я использую HWiNFO бесплатное ПО. Я использую его в течение 15 лет для этой цели. Это решение без вредоносного ПО.
Есть гораздо более простой, но малоизвестный метод, который не требует командной строки:
Откройте диспетчер устройств (devmgmt.msc) -> Просмотр -> Устройства по подключению
Обратите внимание на классы WMI Win32_PnPEntity
и Win32_Bus
:
PS C:\Users\Administrator> (gwmi Win32_Bus -Filter 'DeviceID like "PCI%"').GetRelated('Win32_PnPEntity').GetDeviceProperties('DEVPKEY_Device_LocationInfo').deviceProperties | ft data,DeviceID
data DeviceID
---- --------
PCI bus 0, device 1, function 0 PCI\VEN_8086&DEV_7000&SUBSYS_00000000&REV_00\3&267A616A&0&08
PCI bus 0, device 4, function 0 PCI\VEN_80EE&DEV_CAFE&SUBSYS_00000000&REV_00\3&267A616A&0&20
PCI bus 0, device 13, function 0 PCI\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02\3&267A616A&0&68
PCI bus 0, device 0, function 0 PCI\VEN_8086&DEV_1237&SUBSYS_00000000&REV_02\3&267A616A&0&00
PCI bus 0, device 3, function 0 PCI\VEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_00\3&267A616A&0&18
PCI bus 0, device 8, function 0 PCI\VEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_00\3&267A616A&0&40
PCI bus 0, device 9, function 0 PCI\VEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_00\3&267A616A&0&48
PCI bus 0, device 10, function 0 PCI\VEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_00\3&267A616A&0&50
PCI bus 0, device 16, function 0 PCI\VEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_00\3&267A616A&0&80
PCI bus 0, device 17, function 0 PCI\VEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_00\3&267A616A&0&88
PCI bus 0, device 18, function 0 PCI\VEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_00\3&267A616A&0&90
PCI bus 0, device 19, function 0 PCI\VEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_00\3&267A616A&0&98
PCI bus 0, device 2, function 0 PCI\VEN_80EE&DEV_BEEF&SUBSYS_00000000&REV_00\3&267A616A&0&10
Подробнее об этом здесь.
У меня была та же необходимость, что и у автора поста, и я обнаружил, что lspci доступен на Windows с версии v2.1.99-test5.
Посмотрите на https://github.com/pciutils/pciutils.
Я скомпилировал его для версии на 64 бита на своем Ubuntu 22.04, и он может работать на Windows 11.
sudo apt update && sudo apt install mingw-w64
make CROSS_COMPILE=x86_64-w64-mingw32- HOST=x86_64-windows ZLIB=no IDSDIR=""
Это что-то, что отлично работает (и очень подробно) в недавних версиях PowerShell, я пробовал с v7.4:
Get-WmiObject -Class Win32_PnPEntity -Filter "PNPDeviceID LIKE 'PCI%'"
Ответ или решение
Эквивалент команды lspci в Windows
Команда lspci
в Linux является полезным инструментом для отображения информации о всех устройствах, подключенных к шине PCI. Эта команда помогает точно определить чипсеты, используемые в различных устройствах, таких как видеокарты, сетевые адаптеры и аудиокарты. Пользователи Windows, желающие получить аналогичную информацию о своих системах, могут использовать несколько альтернатив.
1. Использование PowerShell
Одним из способов получения информации о устройствах PCI в Windows является использование PowerShell. В PowerShell можно выполнить следующую команду:
Get-WmiObject -Class Win32_PnPEntity -Filter "PNPDeviceID LIKE 'PCI%'"
Эта команда вернет список всех устройств, подключенных через шину PCI, детализируя их свойства. Использование PowerShell позволяет получить достаточно полное представление о конфигурации системы без необходимости установки дополнительных приложений.
2. Windows Management Instrumentation (WMI)
Таким образом, воспользовавшись WMI, можно получить доступ к классификации Win32_PnPEntity
, чтобы получить информацию о всех связанных с устройствами устройствах. Также существует класс Win32_Bus
, который можно использовать в сочетании с классом Win32_PnPEntity
.
Пример использования в PowerShell:
PS C:\Users\Administrator> (gwmi Win32_Bus -Filter 'DeviceID like "PCI%"').GetRelated('Win32_PnPEntity').GetDeviceProperties('DEVPKEY_Device_LocationInfo').deviceProperties | ft data,DeviceID
Эта команда отображает данные о местоположении устройств на шине PCI.
3. Использование стороннего ПО
Если пользователю необходимо более удобное или графическое представление информации о PCI, можно использовать сторонние программы. Некоторые из наиболее популярных инструментов включают:
-
HWiNFO: Это бесплатная утилита, которая предоставляет детальную информацию о системе и оборудовании, включая PCI устройства. Она давно зарекомендовала себя как надежный инструмент и не содержит вредоносного ПО.
-
SIW (System Information for Windows): Эта программа предлагает комплексный анализ системы и может отображать информацию о подключенных устройствах.
-
PCI Utilities: Можно также использовать порты
lspci
для Windows из репозитория PCIUtils. Они предоставляют аналогичный функционал, включая такие команды, какlspci -nn
, которые отражают идентификаторы устройств.
Ссылка на портированные средства можно найти здесь.
4. Диспетчер устройств
Для пользователей, предпочитающих графический интерфейс, можно воспользоваться встроенным инструментом – Диспетчером устройств. Чтобы открыть диспетчер устройств, выполните следующие шаги:
- Нажмите сочетание клавиш
Win + R
, введитеdevmgmt.msc
и нажмите Enter. - В меню выберите
Вид
, затемУстройства по подключению
. Это позволит вам увидеть иерархическую структуру подключенных устройств, включая устройства PCI.
Заключение
Хоть Windows и не предоставляет встроенной команды, аналогичной lspci, существующие инструменты и сторонние программы позволяют пользователям получить подробную информацию о PCI устройствах в системе. Будь то через PowerShell, WMI, сторонние утилиты или графические интерфейсы, пользователи могут легко получить необходимые данные для диагностики и анализа оборудования.