In PowerShell, how can I determine the root of a drive (supposing it's a networked drive)

橙三吉。 提交于 2020-01-05 06:15:43

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!