在 PowerShell 中,如何确定当前驱动器是否为网络驱动器
本文关键字:驱动器 是否 网络 何确定 PowerShell | 更新日期: 2023-09-27 17:47:22
我需要从Powershell中知道当前驱动器是否是映射驱动器。
不幸的是,Get-PSDrive 没有"按预期"工作:
PS:24 H:'temp
>get-psdrive h
Name Provider Root CurrentLocation
---- -------- ---- ---------------
H FileSystem H:' temp
但在MS-Dos中,"网络使用"表明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?
使用 .NET 框架:
PS H:'> $x = new-object system.io.driveinfo("h:'")
PS H:'> $x.drivetype
Network
接受答案的稍微紧凑的变体:
[System.IO.DriveInfo]("C")
尝试 WMI:
Get-WMI -query "Select ProviderName From Win32_LogicalDisk Where DeviceID='H:'"
使用 WMI 的另一种方法:
get-wmiobject Win32_LogicalDisk | ? {$_.deviceid -eq "s:"} | % {$_.providername}
通过以下方式获取所有网络驱动器:
get-wmiobject Win32_LogicalDisk | ? {$_.drivetype -eq 4} | % {$_.providername}
更进一步,如下所示:
([System.IO.DriveInfo]("C")).Drivetype
请注意,这仅适用于本地系统。 对远程计算机使用 WMI。
最可靠的方法是使用 WMI
get-wmiobject win32_volume | ? { $_.DriveType -eq 4 } | % { get-psdrive $_.DriveLetter[0] }
驱动器类型是一个枚举,具有以下值
0 - 未知1 - 无根目录2 - 可移动磁盘3 - 本地磁盘4 - 网络驱动器5 - 光盘6 - 内存磁盘
这是我关于这个主题的博客文章的链接