如何通过PowerShell获取所有摄像头设备的ID及对应名称
问题原因
之前使用的命令存在两个明显缺陷:
- 仅通过
caption字段模糊匹配camera关键词,大量摄像头设备的标题字段不会直接标注该关键词,会被直接过滤掉 - 没有做设备有效性、设备类别的筛选,最终返回的是远程桌面虚拟摄像头总线这类非实际成像的总线设备,并非可用的摄像头硬件
正确获取方式
摄像头设备在系统中有固定的PNP类标识,直接按类筛选比模糊匹配名称准确率高得多:
- Win10 1903及之后版本,摄像头统一归为
Camera类,对应GUID为{ca3e7ab9-b4c3-4ae6-8251-579ef933890f} - 更早版本的Windows系统中,摄像头归在
Image(图像设备)类下
直接运行以下命令即可列出所有当前已连接、可用的摄像头的名称、设备ID、硬件ID、厂商信息:
Get-CimInstance Win32_PnPEntity | Where-Object { ($_.PNPClass -eq 'Camera' -or $_.PNPClass -eq 'Image') -and $_.Present -eq $true } | Select-Object Caption, DeviceID, PNPDeviceID, Manufacturer
运行后就能看到标注为Integrated Camera的内置集成摄像头条目,你提到的ID为"0"的序号是媒体框架枚举设备时生成的动态索引,一般枚举结果中第一个设备就是内置集成摄像头。
如果需要做更精准的过滤,排除虚拟摄像头,可以再加一层硬件ID匹配,物理摄像头的硬件ID一般会带USB\VID_前缀,对应USB连接的成像硬件。
内容的提问来源于stack exchange,提问作者Anna Pastori
相关产品推荐
相关产品推荐

