2014-11-23 132 views
0

我試圖做到這一點:如何使用Powershell查找新插入的USB驅動器的驅動器號?

當我在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

你到目前爲止嘗試過什麼嗎?任何代碼審查? – Alfabravo 2014-11-23 06:21:13

回答

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

+0

謝謝米奇。這與我在原始問題中發佈的解決方案類似。不過,我正在尋找更多。我的問題是,假設我已經連接了一個USB驅動器。當我插入第二個USB驅動器時,我需要找出第二個USB驅動器的驅動器號。我嘗試將deviceID或wmi類中使用的任何內容與eventid 2010中的信息進行匹配。但是,我失敗了。謝謝 – 2014-11-23 13:21:44

相關問題