我有多台可以远程访问的笔记本电脑,但我不知道它们是否有可用的网络摄像头。我看不到它们。我不需要访问网络摄像头;我只需要知道是否有网络摄像头。
有没有办法可以远程判断笔记本电脑是否有网络摄像头?
我希望有某种cmd
可以在每台计算机上触发的代码,可以快速地给我提供可复制的打印输出,以便在计算机之间进行编译。
答案1
在 Windows 上,您可以查看设备管理器以检查是否存在摄像头设备。此检查也可以使用 PowerShell 或命令提示符执行,无需特殊权限。
命令提示符:
pnputil /enum-devices /class Camera /connected
将打印:
Microsoft PnP Utility
Instance ID: USB\VID_0C45&PID_672E&MI_02\6&3d846a0&0&0002
Device Description: Integrated Webcam
Class Name: Camera
Class GUID: {ca3e7ab9-b4c3-4ae6-8251-579ef933890f}
Manufacturer Name: Microsoft
Status: Started
Driver Name: usbvideo.inf
Instance ID: USB\VID_0C45&PID_672E&MI_00\6&3d846a0&0&0000
Device Description: Integrated Webcam
Class Name: Camera
Class GUID: {ca3e7ab9-b4c3-4ae6-8251-579ef933890f}
Manufacturer Name: Microsoft
Status: Started
Driver Name: usbvideo.inf
Instance ID: USB\VID_0FD9&PID_0078&MI_00\8&e3fc9d&0&0000
Device Description: Elgato Facecam
Class Name: Camera
Class GUID: {ca3e7ab9-b4c3-4ae6-8251-579ef933890f}
Manufacturer Name: Microsoft
Status: Started
Driver Name: usbvideo.inf
电源外壳:
Get-PnpDevice -PresentOnly -Class Camera
将打印:
Status Class FriendlyName InstanceId
------ ----- ------------ ----------
OK Camera Integrated Webcam USB\VID_0C45...
OK Camera Integrated Webcam USB\VID_0C45...
OK Camera Elgato Facecam USB\VID_0FD9...
您无法使用简单的过滤器(如上所示)可靠地区分内部和外部摄像头。您必须根据名称或其他提示进行判断。
一些不使用 USB 视频类的旧网络摄像头可能不会出现在相机类。相反,可以使用图像类,如今通常用于文档扫描仪等。
使用pnputil
,您必须运行两个命令才能获取这两个类。使用 PowerShell,您只需要一个:
Get-PnpDevice -PresentOnly -Class Camera,Image
输出(不同的PC,没有-PresentOnly
,因此未知):
Status Class FriendlyName InstanceId
------ ----- ------------ ----------
Unknown Image Logitech QuickCam 3000 USB\VID_...
Unknown Image Brother DCP-9022CDW [3c2af42c08de] SWD\DAFW...
Unknown Camera HTC Vive USB\VID_...
但是,这只适用于非常旧的硬件和它还可以捕捉非摄像设备,比如上面的多功能打印机。
答案2
PowerShell 看起来是个不错的选择。使用 PowerShell 发现笔记本电脑网络摄像头给出了几个选项。
对我有用的是
Get-CimInstance Win32_PnPEntity | where caption -match 'cam'
您可能需要多次运行该命令,并使用“camera”或“cam”或其他可以捕捉所有不同选项的术语。例如,我的相机是 Microsoft LifeCam,如果您搜索“camera”,则不会显示该选项
如果你修改搜索条件,你也许可以看到更多内容
Get-CimInstance Win32_PnPEntity | where PNPClass -match 'Image'
这将向您显示所有成像设备,可能包括扫描仪和其他设备。
答案3
我还没有对此进行过广泛的测试,但是
Get-PnpDevice -PresentOnly | Where-Object { $_.Class -match '^Camera' }
似乎有效 - 有点开始于这个答案并调整至适合
它还会在“友好名称”下为您提供相机型号的名称