Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 使用VBScript查找USB驱动器号_Windows_Vbscript_Wmi_Usb Drive - Fatal编程技术网

Windows 使用VBScript查找USB驱动器号

Windows 使用VBScript查找USB驱动器号,windows,vbscript,wmi,usb-drive,Windows,Vbscript,Wmi,Usb Drive,我在电脑上找到了这个脚本 这个脚本是我需要的旁边。它检测usb驱动器的插入。如何修改它以查找usb驱动器的驱动器号?如果我得到驱动器号,那么在插入时,我将能够运行Avast Antivirus的命令行扫描程序,在插入时自动扫描驱动器,而不是回显“找到USB设备”。请导游 这是极难做到的。最有用的驱动器信息来自Win32_LogicalDrive类。不幸的是,可移动驱动器通常不会在此类中填充有关驱动器的大量信息。诸如DeviceID和PNPDeviceID之类的有用属性通常为空。下一个最好的方法是

我在电脑上找到了这个脚本


这个脚本是我需要的旁边。它检测usb驱动器的插入。如何修改它以查找usb驱动器的驱动器号?如果我得到驱动器号,那么在插入时,我将能够运行Avast Antivirus的命令行扫描程序,在插入时自动扫描驱动器,而不是回显“找到USB设备”。请导游

这是极难做到的。最有用的驱动器信息来自Win32_LogicalDrive类。不幸的是,可移动驱动器通常不会在此类中填充有关驱动器的大量信息。诸如DeviceID和PNPDeviceID之类的有用属性通常为空。下一个最好的方法是迭代Win32_LogicalDisk类以获得可移动磁盘的实例。与您的事件驱动方法保持一致,这看起来是这样的

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set wmiEvent = objWMIService.ExecNotificationQuery( _
    "Select * From __InstanceCreationEvent Within 1" & _
        " Where TargetInstance ISA 'Win32_PnPEntity' and" & _
            " TargetInstance.Description='USB Mass Storage Device'")

While True
    Set objEvent = wmiEvent.NextEvent()
    Set objUSB = objEvent.TargetInstance
    strName = objUSB.Name
    strDeviceID = objUSB.DeviceID
    Set objUSB = Nothing

    Set colDrives = objWMIService.ExecQuery( _
        "Select * From Win32_LogicalDisk Where DriveType = 2")

    For Each objDrive in colDrives
        strDriveLetter = objDrive.DeviceID
    Next
    Set colDrives = Nothing

    WScript.Echo strName & " was mounted as " & strDriveLetter
Wend
Set wmiEvent = Nothing
Set objWMIService = Nothing

当然,只有当插入的驱动器是系统上唯一的可移动磁盘时,这才起作用。您可以通过在脚本启动时捕获所有驱动器号并在插入驱动器时比较它们来克服此限制,但是,这种方法也不是绝对可靠的。更改任何其他驱动器的驱动器号分配将导致脚本返回无效信息。

是所有连接驱动器的集合,而不仅仅是上次连接的驱动器。 应该是:

strDriveLetter = ""
For Each objDrive in colDrives
  strDriveLetter = strDriveLetter  & objDrive.DeviceID
Next
strDriveLetter = ""
For Each objDrive in colDrives
  strDriveLetter = strDriveLetter  & objDrive.DeviceID
Next