我希望使用PowerShell replace
函数替换部分网络路径。我遇到了如何处理反斜杠(\
)
"\\Share\Users\Location\Username" -ireplace "\\Share\Users","\\NewShare\AllUsers"
上面的代码会产生错误,所以我看了使用[Regex] :: Escape转义但它不会替换文本:
[Regex]::Escape( "\\Share\Users\Location\Username") -ireplace [Regex]::Escape("\\Share\Users"),[Regex]::Escape("\\NewShare\AllUsers")
这就是我得到的:
\\\\Share\\Users\\Location\\Username
我所需要的只是:
\\Share\Users
替换为\\NewShare\AllUsers
以生成\\NewShare\AllUsers\Location\Username
我的知识目前仅限于正则表达式,所以我想知道是否有人可以帮助我:)
答案 0 :(得分:4)
\
是正则表达式中的特殊字符,\U
中的\Users
会导致它查找不存在的特殊命令U
。你需要逃避反斜杠:
"\\Share\Users\Location\Username" -ireplace "\\\\Share\\Users", "\\NewShare\AllUsers"
基本上[RegEx]::Escape()
是正确的方法,但关键是只将它用于实际正则表达式的参数(第二个)。
答案 1 :(得分:1)
您应该可以使用ireplace,只需调整您的第一个参数:
"\\Share\Users\Location\Username" -ireplace "\\\\Share\\Users","\\NewShare\AllUsers"
注意我必须转义反斜杠,因为它被视为正则表达式,而第一个和第三个参数被视为字符串。