我有一个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
答案 0 :(得分:0)
在找到最终解决方案之前,这里需要考虑几件事。
首先,我必须对AbsolutePath进行替换。如上所述,至少有3种方法可以做到这一点。
我一开始没有注意到的第二点是AbsolutePath是URL编码的。您没有注意到简单的路径,但是我有一些在其中留有空格的问题。 我可能最终会做自己的函数来将来返回路径对象。感谢您的所有建议。
我最终这样做了。
[string]$ThisTargetPath = [System.Web.HttpUtility]::UrlDecode( $URI.AbsolutePath.Replace('/','\') )