仅从PowerShell中的路径获取驱动器号

Isz*_*szi 6 powershell

我想在PowerShell中创建一个脚本来帮助轻松翻译这样的路径:

H:\MyDoc.docx
Run Code Online (Sandbox Code Playgroud)

进入其真正的绝对路径,如下:

\\FileServer\UserShares\Organization\Department\Me\MyDoc.docx
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我已经建立了我的本地计算机上的网络驱动器映射指向H:\\\FileServer\UserShares\Organization\Department\Me\,但我需要轻松扩展,以便与谁可能没有驱动器映射其他用户共享映射路径.

获得驱动器的路径很容易.

(Get-PSDrive H).DisplayRoot
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试编写一个更通用的脚本时,我遇到了一个问题,该脚本可以自动适应可能指向其他映射驱动器的路径(我确实有几个).我正在弄清楚的是如何从给定路径中提取驱动器号.

我认为Split-Path会有所帮助,但似乎只能将路径分开 - "父"和"叶" - 两者都不会只给出驱动器号.

有没有办法让刚刚从PowerShell中的给定路径的驱动器盘符?

注意:我需要它来处理指向文件文件夹的路径.

小智 10

从PowerShell 3.0开始,Split-Path现在提供以下-Qualifier选项:

-Qualifier
   Indicates that this cmdlet returns only the qualifier of the specified path.
   For the FileSystem or registry providers, the qualifier is the drive of the
   provider path, such as C: or HKCU:.
Run Code Online (Sandbox Code Playgroud)

使用OP的例子:

PS C:\> Split-Path -Path "H:\MyDoc.docx" -Qualifier
Run Code Online (Sandbox Code Playgroud)

回报 H:


arc*_*444 8

您可以使用PSDriveFileInfo对象的属性:

(Get-Item .\your\path\to\file.ext).PSDrive.Name
Run Code Online (Sandbox Code Playgroud)