将 UNC 路径拆分为多个组件



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

我正在使用System.Uri来拆分主机和路径字符串,它可以工作。唯一的问题是返回的绝对路径属性已将反斜杠换成了正斜杠。当我想将 UNC 重新连接在一起时,我需要做一些令人讨厌的字符串操作来将斜杠改回来(斜杠(。

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

我想知道是否有另一种/更干净的方法来提取路径组件,而不是使用正则表达式与 System.Uri

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

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

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

首先,我不得不在绝对路径上做一个替换。如上所述,至少有 3 种方法可以做到这一点。

第二件我

一开始没有注意到的事情是AbsolutePath是URL编码的。你没有注意到简单的路径,但我有一些带有空格的路径导致了问题。我最终可能会创建自己的函数来将来返回路径对象。感谢您的所有建议。

我最终做到了。

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

最新更新