res*_*101 4 usb powershell wmi
我已经看过C#和其他一些语言的文章解释了如何实现我正在寻找但我不知道如何转换它们.
以下链接说明了如何获得答案: 如何获取USB设备的驱动器号?
Win32_DiskDrive-> Win32_DiskDriveToDiskPartition - > Win32_DiskPartition - > Win32_LogicalDiskToPartition - > Win32_LogicalDisk
第三个答案(由GEOCHET解释)也解释了如何实现答案,但不是在powershell中.
尝试:
gwmi win32_diskdrive | ?{$_.interfacetype -eq "USB"} | %{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}
Run Code Online (Sandbox Code Playgroud)
测试插入一个和多个USB设备.
我知道这个话题已经被搁置了一段时间,但由于我经常回到这个话题,我想我会更新一些东西。
如果使用 Windows 7 及更高版本,一个更简单的解决方案是:
Get-WmiObject Win32_Volume -Filter "DriveType='2'"
Run Code Online (Sandbox Code Playgroud)
如果你想避免幻数:
Get-WmiObject Win32_Volume -Filter ("DriveType={0}" -f [int][System.IO.DriveType]::Removable)
Run Code Online (Sandbox Code Playgroud)
参考资料:
https : //docs.microsoft.com/en-us/previous-versions/windows/desktop/vdswmi/win32-volume
https://docs.microsoft.com/en-us/dotnet/api/system.io .驱动类型
get-volume | where drivetype -eq removable | foreach driveletter
volume | ? drivetype -eq removable | % driveletter
Run Code Online (Sandbox Code Playgroud)