我希望能够使用PowerShell编写一个脚本,以便轻松地翻译像这样的路径:
在这种情况下,我在本地计算机上创建了一个网络驱动器映射,将
获取驱动器的路径很容易。
然而,当我尝试编写更通用的脚本以自动适应可能指向其他映射驱动器(我有几个)的路径时,遇到了问题。 我很难弄清楚的是如何从给定的路径中仅提取驱动器号。
我认为
在PowerShell中,是否有一种方法可以仅从给定路径中获取驱动器号?
注意:我需要此方法适用于指向文件或文件夹的路径。
H:\MyDoc.docx
将其转换为真正的绝对路径,像这样:
\\FileServer\UserShares\Organization\Department\Me\MyDoc.docx
在这种情况下,我在本地计算机上创建了一个网络驱动器映射,将
H:\
指向\\FileServer\UserShares\Organization\Department\Me\
,但是我需要轻松扩展映射路径,以便与可能没有驱动器映射的其他用户共享它。获取驱动器的路径很容易。
(Get-PSDrive H).DisplayRoot
然而,当我尝试编写更通用的脚本以自动适应可能指向其他映射驱动器(我有几个)的路径时,遇到了问题。 我很难弄清楚的是如何从给定的路径中仅提取驱动器号。
我认为
Split-Path
会有所帮助,但它似乎只能将路径分成块 - “Parent”和“Leaf” - 都不能仅给出驱动器号。在PowerShell中,是否有一种方法可以仅从给定路径中获取驱动器号?
注意:我需要此方法适用于指向文件或文件夹的路径。
Get-ChildItem
获取实际对象,然后使用该对象的数据进行操作。我可以看到这对文件有效,但文件夹呢? - IsziGet-ChildItem
返回文件夹中所有对象而不是文件夹本身。将其替换为Get-Item
,它将适用于文件和文件夹。 - Iszi$f = get-item yourfile.txt; $f.fullname.trimstart((get-item $f).psdrive.name + ":")
或$f.fullname -ireplace "[a-z]:(.*)", '$1'
- arco444$p=Read-Host; $d=(GI $p).PSDrive.Name; $t=(GI $p).FullName.TrimStart($x+':'); $n=(GDR $d).DisplayPath; ECHO "$n$t";
- Iszi