2016-10-03 58 views
0

我需要编辑脚本以更改应用程序配置文件中的三个连接字符串。我为连接字符串创建了一个变量,提供服务器,虚拟DB名称,用户名和密码。更改连接字符串中的三个数据库名称

因此,该变量是Server=serverName;Database=dummyDbName;User ID=userName;Password=securePassword

这是行之有效的,配置文件正在相应地更新。下一阶段再次与连接字符串名称替换dummyDbName通过连接字符串进行迭代,所以如果:

<add name="correctDbName" connectionString="Server=serverName;Database=dummyDbName;User ID=userName;Password=securePassword" providerName="System.Data.SqlClient" /> 

我想改变Database=dummyDbNameDatabase=correctDbName

我在正确的轨道上吗?

$appConfigFile = (Join-Path $filelocation) 
$appConfig = [xml](Get-Content $appConfigFile) 

$dbName = ($appConfig.configuration.connectionStrings.add | Where-Object {$_.name -eq "aspnetdb"}) 
$dbName = $dbname -replace "dummyDbName", "aspnetdb" 
+0

这[的TechNet博客文章(https://blogs.technet.microsoft.com/heyscriptingguy/2011/03/21/use-powershell-to-replace-text-in-strings/)应该给你使用'-replace'的一些指导。 – BenH

回答

0

是的,你是在正确的轨道上。但既然你要替换的名称在<add>节点的属性,你需要修改属性,而不是节点本身:

$node = $appConfig.configuration.connectionStrings.add | 
     Where-Object {$_.name -eq "aspnetdb"} 
$node.connectionString = $node.connectionString -replace 'dummyDbName', 'aspnetdb' 

保存修改XML回后的文件。

$appConfig.Save($appConfigFile)