替换连接字符串中的数据源

时间:2019-05-23 14:37:41

标签: powershell

在此字符串中:

"Data Source=srv1-a.be.com;Initial Catalog=db1;Provider=SQLNCLI11;Integrated Security=SSPI;"

无论数据源名称是什么,我都想用PowerShell脚本替换为localhost。

使用以下代码,在localhost之后字符串将被截断!
我得到了结果→Data Source=localhost

"Data Source=srv1-a.be.com;Initial Catalog=db1;Provider=SQLNCLI11;Integrated Security=SSPI;" -replace  '(?<grp1>Data Source=)(.*)', '${grp1}localhost'

结果应为:

"Data Source=localhost;Initial Catalog=db1;Provider=SQLNCLI11;Integrated Security=SSPI;"

1 个答案:

答案 0 :(得分:0)

我对您的-Replace操作进行了一些修改:

"Data Source=srv1-a.be.com;Initial Catalog=db1;Provider=SQLNCLI11;Integrated Security=SSPI;" -replace '(?<=Data Source=)[^;]+','localhost'

我在(?<=)后使用正向查找来查找Data Source=字符串,并将位置设置在该位置(=之后的字符)。 [^;]+与当前位置以外的;以外的一个或多个连续字符匹配。然后,我们只是将匹配的字符串替换为localhost。结果,只有服务器名称被匹配和更新。