字符串替换在运行时在powershell脚本中不起作用

时间:2013-09-15 10:24:22

标签: powershell

我有powershell文件,其中我有一行变量decalration,如下所示

[string] $global:myExePath = "\\myshare\code\scripts";

我希望通过执行powershell脚本在运行时将\\myshare\code\scripts替换为\\mynewshare\code1\psscript

我正在使用
 Get-Content $originalfile | ForEach-Object { $_ -replace "\\myshare\code\scripts", $mynewcodelocation.FullName } | Set-Content ($originalfile)

如果正在执行  { $_ -replace "scripts", $mynewcodelocation.FullName }它工作正常,但不适用于{ $_ -replace "\\myshare\code\scripts", $mynewcodelocation.FullName }

这里有什么问题?

1 个答案:

答案 0 :(得分:4)

'\'是一个特殊的正则表达式字符,用于转义其他特殊字符。你需要将每个反斜杠加倍以匹配一个反斜杠。

-replace "\\\\myshare\\code\\scripts",$mynewcodelocation.FullName 

如果您不知道字符串的内容,可以使用escape方法为您转义字符串:

$unc = [regex]::escape("\\myshare\code\scripts")
$unc
\\\\myshare\\code\\scripts

-replace $unc,$mynewcodelocation.FullName