我想在 Windows 设备管理器中找出 PCI 设备。
我从以下位置路径获得此位置路径:
Device Manager - Bluetooth - Intel(R) Wireless Bluetooth(R)
- Properties - Details - Location paths
PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(14)
上述位置路径显示蓝牙是 USB 设备“ #USBROOT(0)#USB(14)
”,但该 USB 设备位于“ PCIROOT(0)#PCI(1400)
”下。
我尝试了以下命令,但没有作用:
Get-PnpDeviceProperty -KeyName DEVPKEY_Device_LocationPaths -InstanceId "PCIROOT(0)#PCI(1400)"
输出如下:
Get-PnpDeviceProperty : No Win32_PnPEntity objects found with property 'DeviceID' equal to 'PCIROOT(0)#PCI(1400)'. Verify the value of
the property and retry.
PCIROOT(0)#PCI(1400)
如何通过搜索“ ”powershell
或使用其他方法找到真正的 PCI 设备?
答案1
我知道这比较老了,但我在研究自己的 get-pnpdevice Powershell 问题时偶然发现了这个帖子。我需要位置路径属性的名称,并在这里找到了它,谢谢!然后我注意到你的查询......查询不起作用的原因是你将 PCIe 位置路径作为 InstanceID 传递给了它。你已经在该查询中找到了你要找的东西。
我有实例 ID,我需要通过实例 ID 查找(以验证和比较)PCIe 路径位置。所以对我来说,我在 Hyper-v 上进行离散设备分配。所以我有一些 Nvidia A16 GPU,我需要 PCIe 位置和 InstanceID,这样我就可以控制 Hyper-visor 中的设备。
所以首先我得到我的 InstanceID:
Get-PnpDevice -FriendlyName "Nvidia A16" | select -Property FriendlyName,InstanceId
然后我获取我的 InstanceID 并获取我的位置路径。请注意,与位置路径不同,实例 ID 以 PCI\VEN_ 开头。(位置路径始终以 PCIRoot 开头。)
Get-PnpDeviceProperty -KeyName DEVPKEY_Device_LocationPaths -InstanceId "PCI\VEN_10DE&DEV_25B6&SUBSYS_14A910DE&REV_A1\8&17939770&0&002000100010", "PCI\VEN_10DE&DEV_25B6&SUBSYS_14A910DE&REV_A1\8&B4161C8&0&006000100010" | select -Property Data
在示例中,我仅使用了 2 个实例 ID。返回的数据将以逗号分隔,并且位置路径将与查询的实例 ID 的顺序相同.. 因此此时很容易匹配。
{PCIROOT(C9)#PCI(0200)#PCI(0000)#PCI(0200)#PCI(0000)#PCI(0400)#PCI(0000), ACPI(_SB_)#ACPI(PC10)#ACPI(QR4A)#PCI(0000)...
{PCIROOT(16)#PCI(0200)#PCI(0000)#PCI(0200)#PCI(0000)#PCI(0C00)#PCI(0000),ACPI(巴拿马)#ACPI(PC01)#ACPI(BR1A)#PCI(0000)...
只是想发表一下我的看法,因为你的帖子对我有帮助,我想我会回报你,并给这个帖子一个结局!
我正在使用没有桌面的 Windows Server 2022。所以我不得不从 CLI 中让它工作。(这是值得的,无耻地宣传 Windows 的核心模式安装)