我正在努力实现这一目标:
当我在Windows(Win7和Win8)中插入USB驱动器时,我想要自动启动脚本(Powershell或批处理命令)。机器已禁用自动播放。
我在DriveFrameworks-UserMode中设置了事件ID为2010的计划任务作为触发器。计划的任务有效。但是,我很难找到新插入的USB驱动器的驱动器号。
我在互联网上找到了一些解决方案,但它们不符合我的要求。解决方案要么检查所有驱动器号(A到Z),要么检查USB驱动器。我想关联DriveFrameworks-UserMode触发器中与事件关联的驱动器号。
这篇文章(How do i get the drive letter of a USB Drive in Powershell?)给了我一些提示,我检查了类win32_logicaldisk,win32_diskdrive和win32_pnpentity,但我找不到匹配它们的线索。
感谢任何帮助。
答案 0 :(得分:1)
这应该有所帮助:
$diskdrive = gwmi win32_diskdrive | ?{$_.interfacetype -eq "USB"}
$letters = $diskdrive | %{gwmi -Query "ASSOCIATORS OF {Win32_DiskDrive.DeviceID=`"$($_.DeviceID.replace('\','\\'))`"} WHERE AssocClass = Win32_DiskDriveToDiskPartition"} | %{gwmi -Query "ASSOCIATORS OF {Win32_DiskPartition.DeviceID=`"$($_.DeviceID)`"} WHERE AssocClass = Win32_LogicalDiskToPartition"} | %{$_. deviceid}
$drive = gwmi win32_volume | ? {$letters -contains ($_.name -replace "\\")}
$drive.DriveLetter
PS。有一个类似的讨论here