我看过C#和其他一些语言的文章解释了如何实现我正在寻找但我不知道如何转换它们。
以下链接说明了如何获得答案: How can I get the drive letter of an USB device?
Win32_DiskDrive-> Win32_DiskDriveToDiskPartition - > Win32_DiskPartition - > Win32_LogicalDiskToPartition - >的Win32_LogicalDisk
第三个答案(由GEOCHET解释)也解释了如何再次实现答案,而不是在powershell中。
答案 0 :(得分:7)
尝试:
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}
使用插入的一个和多个USB设备进行测试。
答案 1 :(得分:4)
我知道这个主题已经被删除了一段时间,但由于这是我经常回来的事情,我会稍微更新一下。
如果使用Windows 7及更高版本,则更简单的解决方案是:
Get-WmiObject Win32_Volume -Filter "DriveType='2'"
如果你想避免幻数:
Get-WmiObject Win32_Volume -Filter ("DriveType={0}" -f [int][System.io.Drivetype]::removable)
参考文献: http://msdn.microsoft.com/en-us/library/windows/desktop/aa394515(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/system.io.drivetype.aspx
答案 2 :(得分:1)
从PowerShell v3.0开始,Microsoft引入了Get-Cim*
命令,这使命令比Get-WmiObject
ASSOCIATORS查询方法的丑陋更容易:
Get-CimInstance -Class Win32_DiskDrive -Filter 'InterfaceType = "USB"' -KeyOnly |
Get-CimAssociatedInstance -ResultClassName Win32_DiskPartition -KeyOnly |
Get-CimAssociatedInstance -ResultClassName Win32_LogicalDisk |
Format-List *
或者:
Get-CimInstance -Class Win32_DiskDrive -Filter 'InterfaceType = "USB"' -KeyOnly |
Get-CimAssociatedInstance -Association Win32_DiskDriveToDiskPartition -KeyOnly |
Get-CimAssociatedInstance -Association Win32_LogicalDiskToPartition |
Format-List *
以上命令是等效的。
答案 3 :(得分:0)
get-volume | where drivetype -eq removable