我是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中的文件内容本身有$ _。 有没有办法有一个转义字符,以避免替换替换字符串内容或任何其他方式来实现目标?
答案 0 :(得分:0)
-replace
进行正则表达式匹配。您需要转义正则表达式特殊字符,例如:
$ReleaseScript = Get-Content $SourceFile -Raw
$ReleaseScript = [regex]::Escape($ReleaseScript)
e.g。
PS C:\> [regex]::Escape('$_')
\$_
(或者,@ wOxxOm注释,字符串文字替换为.Replace()
字符串方法)