Get the drive letter of USB drive in PowerShell

后端 未结 4 955
梦谈多话
梦谈多话 2020-12-01 22:21

I\'ve seen articles in C# and some other languages that explain how to achieve what I\'m looking for but I don\'t know how to convert them.

  • The following lin

相关标签:
4条回答
  • 2020-12-01 23:01

    Beginning with PowerShell v3.0, Microsoft introduce the Get-Cim* commands which make this easier than the ugliness of the Get-WmiObject ASSOCIATORS query method:

    Get-CimInstance -Class Win32_DiskDrive -Filter 'InterfaceType = "USB"' -KeyOnly | 
        Get-CimAssociatedInstance -ResultClassName Win32_DiskPartition -KeyOnly |
        Get-CimAssociatedInstance -ResultClassName Win32_LogicalDisk |
        Format-List *
    

    Or:

    Get-CimInstance -Class Win32_DiskDrive -Filter 'InterfaceType = "USB"' -KeyOnly |
        Get-CimAssociatedInstance -Association Win32_DiskDriveToDiskPartition -KeyOnly |
        Get-CimAssociatedInstance -Association Win32_LogicalDiskToPartition |
        Format-List *
    

    The above commands are equivalent.

    0 讨论(0)
  • 2020-12-01 23:03

    I know the subject has been dropped for a while, but since it's something I come back to pretty often, I thought I'd update things a bit.

    If using Windows 7 and above, a much simpler solution would be:

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

    And if you want to avoid magic numbers:

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

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

    0 讨论(0)
  • 2020-12-01 23:10

    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.

    0 讨论(0)
  • 2020-12-01 23:14
    get-volume | where drivetype -eq removable | foreach driveletter
    
    0 讨论(0)
提交回复
热议问题