问题
In PowerShell, even if it's possible to know if a drive is a network drive: see In PowerShell, how can I determine if the current drive is a networked drive or not?
When I try to get the "root" of the drive, I get back the drive letter.
The setup: 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.
Get-PSDrive tells us that the Root is H:
PS:24 H:\temp
>get-psdrive h
Name Provider Root CurrentLocation
---- -------- ---- ---------------
H FileSystem H:\ temp
and using system.io.driveinfo does not give us a complete answer:
PS:13 H:\
>$x = new-object system.io.driveinfo("h:\")
PS:14 H:\
>$x.DriveType
Network
PS:15 H:\
>$x.RootDirectory
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 29/09/2008 16:45 h:\
Any idea of how to get that info?
Thanks
回答1:
Try WMI:
Get-WMIObject -query "Select ProviderName From Win32_LogicalDisk Where DeviceID='H:'"
回答2:
The trick is that the attribute name is different than expected. Try:
(Get-PSDrive h).DisplayRoot
回答3:
$drive = gwmi win32_logicaldisk -filter "DeviceID='H:'" if($drive.DriveType -eq 4) {write-host "drive is a network share"}
回答4:
$fso=new-object -com "Scripting.Filesystemobject" $fso.GetDrive("Y").ShareName
来源:https://stackoverflow.com/questions/158520/in-powershell-how-can-i-determine-the-root-of-a-drive-supposing-its-a-network