将UNC路径拆分为组件

时间:2019-05-31 15:03:58

标签: powershell

我有一个UNC路径列表,我需要对其进行各种测试和操作。

我正在使用System.Uri拆分主机和路径字符串,并且可以正常工作。唯一的麻烦是返回的绝对路径属性已将反斜杠替换为正斜杠。当我想将UNC重新加入一起时,我需要做一些麻烦的字符串操作以将斜杠改回原来的位置。

我知道我可以使用正则表达式和其他东西,但是我一直在寻找一种更清洁,更优雅的方法。有时您需要进行字符串操作,但Powershell教会了我寻找方法和对象的方法。

我想知道是否有比使用regex vs System.Uri来提取路径组件的另一种/更清洁的方法

理想情况下,我在寻找所有路径组件,而不仅仅是替换斜杠。

$TestPath = "\\hostname.domain.com\share_24_$\folder"
$X = New-Object System.Uri -ArgumentList $TestPath

$X.Host
hostname.domain.com

$X.AbsolutePath
/share_24_$/folder

1 个答案:

答案 0 :(得分:0)

在找到最终解决方案之前,这里需要考虑几件事。

首先,我必须对AbsolutePath进行替换。如上所述,至少有3种方法可以做到这一点。

我一开始没有注意到的第二点是AbsolutePath是URL编码的。您没有注意到简单的路径,但是我有一些在其中留有空格的问题。 我可能最终会做自己的函数来将来返回路径对象。感谢您的所有建议。

我最终这样做了。

[string]$ThisTargetPath = [System.Web.HttpUtility]::UrlDecode( $URI.AbsolutePath.Replace('/','\') )