I've seen articles in C# and some other languages that explain how to acheive what im looking for but i dont know how to convert them.
The following link explains how to get the answer:
How can I get the drive letter of an USB device?
Win32_DiskDrive-> Win32_DiskDriveToDiskPartition -> Win32_DiskPartition -> Win32_LogicalDiskToPartition -> Win32_LogicalDisk
the 3rd answer down (by GEOCHET) explains also explains how to acheive the answer but again, not in powershell.
How to find USB drive letter?
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.
I know the subject has been dropped for a while, but since it's something I come back to pretty often, I though 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:
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
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.