如何使用Powershell查找新插入的USB驱动器的驱动器号?

时间:2014-11-23 05:42:59

标签: windows powershell scheduled-tasks

我正在努力实现这一目标:

当我在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,但我找不到匹配它们的线索。

感谢任何帮助。

1 个答案:

答案 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