刷新目录后,我正在尝试从PowerHhell编辑文本文件。
尝试从目标位置Get-Content
到dbconnecthost
,而源Set-Content
是我们要搜索的目标位置。
然后,我们要替换为目标信息和.ps1
。这些变量将从另一个function ReplaceDBhost {
Get-Content ("$TargetLocation\Data\config.txt") | Foreach-Object {
$_ -replace ('^dbconnecthost=' + '$SourceDBConnectHost'), ('dbconnecthost=' + '$TargetDBConnectHost' )
} | Set-Content ("$TargetLocation\Data\config.txt")
}
文件中提取。
以下是我要使用的内容。
char **a
问题是,运行此程序时我没有任何更改。任何帮助将不胜感激。
答案 0 :(得分:4)
使用单引号时,这称为字符串 literal ,并且不支持变量扩展。要解决此问题,您需要使用双引号(如果变量是字符串,并且要附加+
,则根本不能使用双引号):
(Get-Content -Path "$TargetLocation\Data\config.txt") |
ForEach-Object {
$_ -replace "^dbconnecthost=$SourceDBConnectHost", "dbconnecthost=$TargetDBConnectHost"
} |
Set-Content -Path "$TargetLocation\Data\config.txt"
尽管可以使用环视功能来改善您的正则表达式:
"(?<=^dbconnecthost=)$SourceDBConnectHost", $TargetDBConnectHost
缩短:
$path = @{Path = "$TargetLocation\Data\config.txt"}
$pattern = "(?<=^dbconnecthost=)$SourceDBConnectHost"
(Get-Content @path) -replace $pattern, $TargetDBConnectHost | Set-Content @path