使用PowerShell替换SQL文件中的多个字符串

时间:2016-04-06 18:06:36

标签: powershell powershell-v3.0

我可以使用PowerShell替换SQL文件中的单个字符串,如下所示:

$newPrefix = "foo'
$dbUserMappingScriptPath = "C:\MySQL_Template.sql"
$updatedDbUserMapingScriptPath = "C:\MySQL.sql"
(gc $dbUserMappingScriptPath).Replace('DBPrefix_',$newPrefix) | sc $updatedDbUserMapingScriptPath

这对单个场景很有用,但我需要替换多个字符串。我尝试了以下内容,但除了用$ newPrefix替换第一个'DBPrefix_'字符串之外,它不执行替换操作。它不会执行“MDFDatabasePath”和“LDFDatabasePath”的替换。

如果给出以下代码段,如何替换多个字符串?请注意,这包含在$ .MDFDatabasePath和$ .LDFDatabasePath值的Foreach-Object中。

$dbUserMappingScriptPath = "C:\MySQL_Template.sql"
$updatedDbUserMapingScriptPath = "C:\MySQL.sql"
(gc $dbUserMappingScriptPath).Replace('DBPrefix_',$newPrefix).Replace('MDFDatabasePath',$_.MDFDatabasePath).Replace('LDFDatabasePath',$_.LDFDatabasePath) | sc $updatedDbUserMapingScriptPath

以下是我的SQL片段:

USE [master]
GO
CREATE DATABASE [DBPrefix_mydb] ON 
( FILENAME = N'MDFDatabasePath\DBPrefix_mydb.MDF' ),
( FILENAME = N'LDFDatabasePath\DBPrefix_mydb.ldf' )
 FOR ATTACH
GO

更新:我的PowerShell脚本不匹配,因为我在错误的SQL脚本上运行了替换。上面带有额外.Replace的代码就像魅力一样

0 个答案:

没有答案