6

我看过 C# 和其他一些语言的文章,这些文章解释了如何实现我正在寻找的东西,但我不知道如何转换它们。

4

4 回答 4

8

Try:

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}

Tested with one and more than one USB device plugged-in.

于 2012-05-17T12:01:45.843 回答
7

我知道这个主题已经被放弃了一段时间,但因为它是我经常回来的东西,我想我会更新一些东西。

如果使用 Windows 7 及更高版本,更简单的解决方案是:

Get-WmiObject Win32_Volume -Filter "DriveType='2'"

如果你想避免幻数:

Get-WmiObject Win32_Volume -Filter ("DriveType={0}" -f [int][System.IO.DriveType]::Removable)

参考资料:
https ://docs.microsoft.com/en-us/previous-versions/windows/desktop/vdswmi/win32-volume
https://docs.microsoft.com/en-us/dotnet/api/system.io .drivetype

于 2013-02-06T09:45:32.243 回答
3

从 PowerShell v3.0 开始,Microsoft 引入了一些Get-Cim*命令,这些命令比丑陋的Get-WmiObjectASSOCIATORS 查询方法更容易:

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 *

上面的命令是等价的。

于 2017-12-29T08:32:36.593 回答
3
get-volume | where drivetype -eq removable | foreach driveletter

volume | ? drivetype -eq removable | % driveletter
于 2019-06-23T20:16:51.253 回答