You can use WMI objects to see if a device is removable or not.
If you use win32_logicaldisk you get a number code for the drive.
get-wmiobject -class win32_logicaldisk
Now I have basic information about the drives on my computer. I've listed one fixed disk (type 3), one DVD/CD drive (type 4) and one network drive (type 5). I know these drive types because I looked them up.
I'm not 100% certain if that is correct but cant seem to find it any where else..
You could also use the Win32_DiskDrive class.
like in powershell
get-wmiobject -class Win32_DiskDrive
According to that site InterfaceType can be used, but testing it while typing this it doesnt..
But the output is usable for me it looks like
Partitions : 4
DeviceID : \.PHYSICALDRIVE0
Model : ST9250827AS ATA Device
Size : 250056737280
Caption : ST9250827AS ATA Device
Partitions : 1
DeviceID : \.PHYSICALDRIVE1
Model : USB USB 2.0 Flash USB Device
Size : 2048094720
Caption : USB USB 2.0 Flash USB Device
At the moment i cant get the filter to work on model -like "usb" so that would need some more work but if you put the output of this in/next-to the selection screen the chance of getting the wrong drive will be lower.
At the moment I dont have a SD card so this needs a little check to see it would work for internal and external readers.