如何从控制台远程确定笔记本电脑是否有网络摄像头?

the*_*ist 16 webcam remote-access cmd.exe windows-10

我有多台可以远​​程访问的笔记本电脑,但我不知道它们是否有可用的网络摄像头。我看不到他们。我不需要访问网络摄像头;我只需要知道是否有人在场。

有没有办法远程判断笔记本电脑是否有网络摄像头?

我更喜欢某种cmd可以在每个代码上触发的代码,以便快速为我提供此类信息的可复制打印输出,以便在计算机上进行编译。

Dan*_*l B 30

在 Windows 上,您可以在设备管理器中查看相机设备是否存在。也可以使用 PowerShell 或命令提示符执行此检查,无需特殊权限。

\n

命令提示符:

\n
pnputil /enum-devices /class Camera /connected\n
Run Code Online (Sandbox Code Playgroud)\n

将打印:

\n
Microsoft PnP Utility\n\nInstance ID:                USB\\VID_0C45&PID_672E&MI_02\\6&3d846a0&0&0002\nDevice Description:         Integrated Webcam\nClass Name:                 Camera\nClass GUID:                 {ca3e7ab9-b4c3-4ae6-8251-579ef933890f}\nManufacturer Name:          Microsoft\nStatus:                     Started\nDriver Name:                usbvideo.inf\n\nInstance ID:                USB\\VID_0C45&PID_672E&MI_00\\6&3d846a0&0&0000\nDevice Description:         Integrated Webcam\nClass Name:                 Camera\nClass GUID:                 {ca3e7ab9-b4c3-4ae6-8251-579ef933890f}\nManufacturer Name:          Microsoft\nStatus:                     Started\nDriver Name:                usbvideo.inf\n\nInstance ID:                USB\\VID_0FD9&PID_0078&MI_00\\8&e3fc9d&0&0000\nDevice Description:         Elgato Facecam\nClass Name:                 Camera\nClass GUID:                 {ca3e7ab9-b4c3-4ae6-8251-579ef933890f}\nManufacturer Name:          Microsoft\nStatus:                     Started\nDriver Name:                usbvideo.inf\n
Run Code Online (Sandbox Code Playgroud)\n

电源外壳:

\n
Microsoft PnP Utility\n\nInstance ID:                USB\\VID_0C45&PID_672E&MI_02\\6&3d846a0&0&0002\nDevice Description:         Integrated Webcam\nClass Name:                 Camera\nClass GUID:                 {ca3e7ab9-b4c3-4ae6-8251-579ef933890f}\nManufacturer Name:          Microsoft\nStatus:                     Started\nDriver Name:                usbvideo.inf\n\nInstance ID:                USB\\VID_0C45&PID_672E&MI_00\\6&3d846a0&0&0000\nDevice Description:         Integrated Webcam\nClass Name:                 Camera\nClass GUID:                 {ca3e7ab9-b4c3-4ae6-8251-579ef933890f}\nManufacturer Name:          Microsoft\nStatus:                     Started\nDriver Name:                usbvideo.inf\n\nInstance ID:                USB\\VID_0FD9&PID_0078&MI_00\\8&e3fc9d&0&0000\nDevice Description:         Elgato Facecam\nClass Name:                 Camera\nClass GUID:                 {ca3e7ab9-b4c3-4ae6-8251-579ef933890f}\nManufacturer Name:          Microsoft\nStatus:                     Started\nDriver Name:                usbvideo.inf\n
Run Code Online (Sandbox Code Playgroud)\n

将打印:

\n
\nStatus     Class           FriendlyName                                                                     InstanceId\n------     -----           ------------                                                                     ----------\nOK         Camera          Integrated Webcam                                                                USB\\VID_0C45...\nOK         Camera          Integrated Webcam                                                                USB\\VID_0C45...\nOK         Camera          Elgato Facecam                                                                   USB\\VID_0FD9...\n
Run Code Online (Sandbox Code Playgroud)\n

您无法使用简单的滤镜可靠地区分内部和外部摄像头(如上所示)。您\xe2\x80\x99 必须根据名称或其他提示进行操作。

\n
\n

一些不使用 USB 视频类的较旧网络摄像头可能不会出现在相机类中。相反,可以使用Image类,该类目前通常用于文档扫描仪等。

\n

使用pnputil,您\xe2\x80\x99 必须运行两个命令才能获取这两个类。使用 PowerShell,您只需要一个:

\n
Get-PnpDevice -PresentOnly -Class Camera\n
Run Code Online (Sandbox Code Playgroud)\n

输出(不同的 PC,没有-PresentOnly,因此是Unknown):

\n
Status     Class           FriendlyName                                                                     InstanceId\n------     -----           ------------                                                                     ----------\nUnknown    Image           Logitech QuickCam 3000                                                           USB\\VID_...\nUnknown    Image           Brother DCP-9022CDW [3c2af42c08de]                                               SWD\\DAFW...\nUnknown    Camera          HTC Vive                                                                         USB\\VID_...\n
Run Code Online (Sandbox Code Playgroud)\n

然而,同样,这只适用于非常旧的硬件它也会捕获非相机设备,例如上面的多功能打印机。

\n

  • 现代网络摄像头均使用 USB 视频类 (UVC),将显示在 _Camera_ 类中。您是对的,具有专有驱动程序的旧相机可能会出现在“图像”类别中。我会调整我的答案。 (6认同)
  • 不在我的机器上。我并不是说该命令是错误的,我只是说您不应该依赖它来显示实际连接的所有设备。可能还有更多。我的罗技网络摄像头注册为“图像”类,而不是“相机”类。 (5认同)
  • 注意:这两个命令仅显示我的笔记本电脑上的内部摄像头,而不是通过 USB 连接的外部摄像头。 (4认同)

Mok*_*bai 7

PowerShell 看起来是一个不错的选择。使用PowerShell 发现笔记本电脑网络摄像头中提供了几个选项。

对我有用的是

Get-CimInstance Win32_PnPEntity | where caption -match 'cam'
Run Code Online (Sandbox Code Playgroud)

您可能需要使用“camera”或“cam”的变体或其他可以捕获所有各种选项的术语运行该命令几次。例如,我的相机是 Microsoft LifeCam,如果您搜索“相机”,则不会看到该相机

如果您修改搜索以查找,您可能会看到更多内容

Get-CimInstance Win32_PnPEntity | where PNPClass -match 'Image'
Run Code Online (Sandbox Code Playgroud)

这将向您显示所有成像设备,并可能包括扫描仪和其他设备。

  • 第一个命令是此处列出的唯一一个显示我的内部和外部相机的命令;第二个命令仅显示我的外部摄像头,但不显示内部摄像头。 (2认同)

Jou*_*eek 6

我还没有对此进行广泛的测试,但是

Get-PnpDevice -PresentOnly | Where-Object { $_.Class -match '^Camera' }似乎有效 - 有点从这个答案开始并调整以适应

它还会在“友好名称”下为您提供相机型号的名称

  • 注意:此命令仅显示我的笔记本电脑上的内部摄像头,而不是通过 USB 连接的外部摄像头。 (2认同)