Vbscript 验证USB设备是否连接到特定的USB端口

Vbscript 验证USB设备是否连接到特定的USB端口,vbscript,cmd,Vbscript,Cmd,我正在尝试运行下面的Visual Basic脚本,它是通过CMD执行的。剧本很好,但是它只涵盖了一个非常基本的目的。我试图通过检查设备名称或VID/PID来验证USB1端口是否连接了特定的设备。有人能帮我一个脚本,可以验证某些USB端口有特定的设备连接吗 在将要运行此操作的多台计算机上,环境是相同的,例如,我想验证USB端口1是否包含名称中带有“Scanner”的设备,或者通过检查设备的ID来验证。这可能吗 Option Explicit Dim oWMISrv, collDvcs, collU

我正在尝试运行下面的Visual Basic脚本,它是通过CMD执行的。剧本很好,但是它只涵盖了一个非常基本的目的。我试图通过检查设备名称或VID/PID来验证USB1端口是否连接了特定的设备。有人能帮我一个脚本,可以验证某些USB端口有特定的设备连接吗

在将要运行此操作的多台计算机上,环境是相同的,例如,我想验证USB端口1是否包含名称中带有“Scanner”的设备,或者通过检查设备的ID来验证。这可能吗

Option Explicit
Dim oWMISrv, collDvcs, collUSBDvcs, iUSBDvc , iDvc, sDvcID, sPID, sVID

Function ReplaceX(ByVal sValue, ByVal sPattern, ByVal sNValue)
    Dim oReg : Set oReg = New RegExp
    oReg.Pattern = sPattern
    ReplaceX = oReg.Replace(sValue, sNValue)
    Set oReg = Nothing
End Function

Set oWMISrv = GetObject("winmgmts:\\.\root\cimv2")
Set collDvcs = oWMISrv.ExecQuery("Select * From Win32_USBControllerDevice")

For Each iDvc In collDvcs
    If InStr(iDvc.Dependent, "VID_") Then ' Except keychain drives

        sDvcID = ReplaceX(iDvc.Dependent, ".*""(.*)""", "$1")
        sPID = ReplaceX(sDvcID, ".*PID_([^\\]*).*", "$1")
        sVID = ReplaceX(sDvcID, ".*VID_([^&]*).*", "$1")

        Set collUSBDvcs = oWMISrv.ExecQuery _
        ("Select * From Win32_PnPEntity Where DeviceID = '" & sDvcID & "'")
        For Each iUSBDvc in collUSBDvcs
            Wscript.Echo "Name : "& iUSBDvc.Description
            Wscript.Echo "VID : "& sVID
            Wscript.Echo "PID : "& sPID
            Wscript.Echo String(50, "-")
        Next
        Set collUSBDvcs = Nothing

    End If
Next

Set collDvcs = Nothing
Set oWMISrv = Nothing

你是如何从这个输出中确定“USB端口1”的?这正是我正在努力解决的问题,我想看看.vbs脚本是否可以检查设备的特定后部USB端口。听起来你想知道连接到特定机器上特定端口的信息。如果是这样的话,也许机器制造商(戴尔、惠普等)将是一个信息来源。如果有人插上4端口USB集线器怎么办?我不确定WMI或CIM是否会报告有关设备插入哪个“端口”的任何信息。该设备使用6个COM端口,因此我正在查看哪些设备正在使用COM端口,以查看是否有方法检查设备是否连接到正确的COM端口。