我对powershell脚本很陌生。场景是我必须用不同的值替换第一次出现的字符串,用不同的值替换第二次出现的字符串。
到目前为止,我有这个:
$dbS = Select-String $repoPath\AcceptanceTests\sample.config -Pattern([regex]'dbServer = "@DB_SERVER@"')
write-output $dbS[0]
write-output $dbS[1]
这给出了输出:
D:\hg\default\AcceptanceTests\sample.config:5: dbServer = "@DB_SERVER@"
D:\hg\default\AcceptanceTests\sample.config:12: dbServer = "@DB_SERVER@"
我可以看到这两个事件都是正确的,这会返回一个 MatchInfo 对象。现在我需要替换内容,我试过了:
Get-Content $file | ForEach-Object { $_ -replace "dbserver",$dbS[0] } | Set-Content ($file+".tmp")
Remove-Item $file
Rename-Item ($file+".tmp") $file
但这取代了所有的发生,也取代了整个路径。请帮忙..