Powershell -replace命令正在替换字符串

时间:2016-10-25 02:20:57

标签: powershell powershell-v2.0 powershell-v3.0 powershell-v4.0 powershell-v5.0

我是PowerShell脚本新手。 我尝试使用powershell主要版本5开发脚本。我的脚本的目标是用模板文件替换一些字符串文字。请注意,其中一个字符串文字将替换为文件内容。

$ReleaseScript =  Get-Content $SourceFile -Raw

(Get-Content $ChangeSetTemplatefile -Raw)  |  
 ForEach-Object {
$_  -replace '<insert_script_here>', $ReleaseScript  `
-replace '<username>'          , $UserName  
} 
| Set-Content $CSDestinationFile"

以上替换工作正常,除非$ ReleaseScript中的文件内容本身有$ _。 有没有办法有一个转义字符,以避免替换替换字符串内容或任何其他方式来实现目标?

1 个答案:

答案 0 :(得分:0)

-replace进行正则表达式匹配。您需要转义正则表达式特殊字符,例如:

$ReleaseScript =  Get-Content $SourceFile -Raw
$ReleaseScript =  [regex]::Escape($ReleaseScript)

e.g。

PS C:\> [regex]::Escape('$_')
\$_

(或者,@ wOxxOm注释,字符串文字替换为.Replace()字符串方法)