7

我需要从 Powershell 中知道当前驱动器是否是映射驱动器。

不幸的是,Get-PSDrive 没有“按预期”工作:

PS:24 H:\temp
>get-psdrive  h

Name       Provider      Root      CurrentLocation
----       --------      ----      ---------------
H          FileSystem    H:\          temp

但是在 MS-Dos “net use” 中显示 H: 实际上是一个映射的网络驱动器:

New connections will be remembered.

Status       Local     Remote                    Network
-------------------------------------------------------------------------------
OK           H:        \\spma1fp1\JARAVJ$        Microsoft Windows Network

The command completed successfully.

我想要做的是获取驱动器的根并在提示符中显示它(请参阅:自定义 PowerShell 提示符 - 相当于 CMD 的 $M$P$_$+$G?

4

6 回答 6

10

使用 .NET 框架:

PS H:\> $x = new-object system.io.driveinfo("h:\")
PS H:\> $x.drivetype
Network
于 2008-10-01T16:19:27.400 回答
1

尝试 WMI:

Get-WMI -query "Select ProviderName From Win32_LogicalDisk Where DeviceID='H:'"
于 2008-10-01T16:32:28.727 回答
1

使用 WMI 的另一种方法:

get-wmiobject Win32_LogicalDisk | ? {$_.deviceid -eq "s:"} | % {$_.providername}

获取所有网络驱动器:

get-wmiobject Win32_LogicalDisk | ? {$_.drivetype -eq 4} | % {$_.providername}

于 2008-10-01T16:36:22.743 回答
1

最可靠的方法是使用WMI

get-wmiobject win32_volume | ? { $_.DriveType -eq 4 } | % { get-psdrive $_.DriveLetter[0] } 

DriveType 是具有以下值的枚举

0 - 未知 1 - 无根目录 ​​2 - 可移动磁盘 3 - 本地磁盘 4 - 网络驱动器 5 - 光盘 6 - RAM 盘

这是我在该主题上所做的博客文章的链接

于 2008-10-01T17:31:39.520 回答
1

对已接受答案的稍微更紧凑的变体:

[System.IO.DriveInfo]("C")
于 2008-10-02T16:04:40.657 回答
1

更进一步,如下所示:

([System.IO.DriveInfo]("C")).Drivetype

请注意,这仅适用于本地系统。将 WMI 用于远程计算机。

于 2008-10-06T14:48:37.940 回答