[powershell中的角色

时间:2012-01-04 17:20:14

标签: scripting powershell

我正在使用Powershell替换文本文件中的字符串。

file.txt 中将 String 1 替换为 String 2 我使用

(Get-Content file.ps1) | Foreach-Object { $_ -replace 'String 1', 'String 2'} | Set-Content file.txt

即使替换字符,例如 -

,它也能很好地工作

需要用 [字符替换字符串,但它不起作用。我需要用 -state stopped 替换 -state [VMstate] :: stopped 但是它不能用于

(Get-Content TEMP_config.ps1) | Foreach-Object { $_ -replace '-state [VMstate]::stopped', '-state stopped'} | Set-Content TEMP_config.ps1

如何找到 [ char?

3 个答案:

答案 0 :(得分:6)

替换operator使用regular expressions来匹配文字。搜索文字文本的一种方法是转义搜索文本:

$search = [regex]::escape('[MyText]')
(Get-Content file.ps1) | Foreach-Object { $_ -replace $search , 'String 2'} | Set-Content file.txt

答案 1 :(得分:4)

你必须逃避[

$_ -replace '-state \[VMstate]::stopped', '-state stopped'

如果您不确定要逃避什么,请使用[Regex]::escape

答案 2 :(得分:2)

您可以使用“\ [”而不是“[”(以反斜杠为前缀)来转义[character