2016-10-03 100 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)