9

I need to try to update a web.config file to change the IP address only of the web.config I have included the section of code Im looking at for powershell to script the change.

<connectionStrings>
    <add name="connectionString" connectionString="provider=SQLOLEDB;Server=192.168.1.100;database=sample;Trusted_Connection=Yes" providerName="System.Data.OleDb" />
    <add name="sqlConnectionString" connectionString="Data Source=192.168.1.100;Initial Catalog=sample;Trusted_Connection=Yes" providerName="System.Data.SqlClient" />
  </connectionStrings>

I would like a very simple solution to this just update the ServerIP address.

Anyone know an easy way to do this with PowerShell.

2 Answers 2

11

I'd to the following

$cfg = [xml](gc web.config)
# Replace all references of the IP in all connection string
$cfg.configuration.connectionStrings.add|%{
   $_.connectionString = $_.connectionString -replace "192.168.1.100", "1.0.0.1";
}
$cfg.Save("Web.config");

If you are just looking to replace a specfic connection string, I'd fetch it like this:

$con= $cfg.configuration.connectionStrings.add|?{$_.name -eq "SqlDataCon"};
# Replace the content
$con.connectionString = $con.connectionString -replace "192.168.1.100", "1.0.0.1"
Sign up to request clarification or add additional context in comments.

Comments

5

You can try :

$xml = [xml](Get-Content c:\temp\web.config)
$conString = $xml.connectionStrings.add[0].connectionString
$conString2 = $conString -replace '192.168.1.100','10.10.10.10'
$xml.connectionStrings.add[0].connectionString = $conString2
$conString = $xml.connectionStrings.add[1].connectionString
$conString2 = $conString -replace '192.168.1.100','10.10.10.10'
$xml.connectionStrings.add[1].connectionString = $conString2
$xml.Save('c:\temp\web2.config')

This do the job for the two connection strings. If you don't want to hard code the old IP address you can use :

$conString -replace 'Server=.*;','Server=10.10.10.11;'

1 Comment

For me I had to make the regex non greedy otherwise it would erase any of the keys after Server: $conString -replace 'Server=.*?;','Server=10.10.10.11;'

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.