用vbs确定可移动驱动器的连接时间

2019-01-16 09:56:27王旭
问:
您好,脚本专家!如何确定 USB 闪存驱动器的连接时间?
-- PS
答:
您好,PS。是的,我们承认:脚本专家确实懒惰。(尤其是在周五,这一天我们必须编写周一专栏。)可能有一种方法能够专门监视何时插入 USB 闪存驱动器。但是,我们找不到这种方法,至少不能马上找到它。不可否认,或许我们可能感觉有点困难。但是,我们还是决定编写一个脚本,用来告诉您任何可移动驱动器与计算机连接(或断开连接)的时间。我们希望这样可以为您提供一些附加价值和灵活性。
嗨,我们并没有说我们确实已为您提供了附加价值和灵活性。我们只是希望自己能够做到。
实际上,这是一个容易编写的小脚本。另外,它还有一个优点,就是能够在任意版本的 Windows 上运行。(最初,我们曾经不加思索地想要使用 Win32_VolumeChangeEvent 类来完成这项任务,但是,该特定 WMI 类只能在 Windows Server 2003 上找到。)
该段代码如下所示:

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" & strComputer & "rootcimv2") 
Set colEvents = objWMIService.ExecNotificationQuery _ 
    ("Select * From __InstanceOperationEvent Within 10 Where " _ 
        & "TargetInstance isa 'Win32_LogicalDisk'") 
Do While True 
    Set objEvent = colEvents.NextEvent 
    If objEvent.TargetInstance.DriveType = 2 Then  
        Select Case objEvent.Path_.Class 
            Case "__InstanceCreationEvent" 
                Wscript.Echo "Drive " & objEvent.TargetInstance.DeviceId & _ 
                    " has been added." 
            Case "__InstanceDeletionEvent" 
                Wscript.Echo "Drive " & objEvent.TargetInstance.DeviceId & _ 
                    " has been removed." 
        End Select 
    End If 
Loop