I need to know, from within Powershell, if the current drive is a mapped drive or not.
Unfortunately, Get-PSDrive is not working "as expected":
PS:24 H:\temp
>get-psdrive h
Name Provider Root CurrentLocation
---- -------- ---- ---------------
H FileSystem H:\ temp
but in MS-Dos "net use" shows that H: is really a mapped network drive:
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
OK H: \\spma1fp1\JARAVJ$ Microsoft Windows Network
The command completed successfully.
What I want to do is to get the root of the drive and show it in the prompt (see: Customizing PowerShell Prompt - Equivalent to CMD's $M$P$_$+$G?)
Take this a step further as shown below:
Note this only works for the the local system. Use WMI for remote computers.
An alternative way to use WMI:
get-wmiobject Win32_LogicalDisk | ? {$_.deviceid -eq "s:"} | % {$_.providername}
Get all network drives with:
get-wmiobject Win32_LogicalDisk | ? {$_.drivetype -eq 4} | % {$_.providername}
A slightly more compact variation on the accepted answer:
Use the .NET framework:
The most reliable way is to use WMI
The DriveType is an enum wit hthe following values
0 - Unknown 1 - No Root Directory 2 - Removable Disk 3 - Local Disk 4 - Network Drive 5 - Compact Disk 6 - RAM Disk
Here's a link to a blog post I did on the subject
Try WMI: