How do I read/write App.config settings with PowerShell?

后端 未结 2 1184
臣服心动
臣服心动 2020-12-24 06:45

I\'d like to use PowerShell as part of our automated build process to update an App.config file while deploying into our test environment. How can I do this?

相关标签:
2条回答
  • 2020-12-24 07:28

    The code can be much more shorter (based on Robin's app.config):

    $appConfig = [xml](cat D:\temp\App.config)
    $appConfig.configuration.connectionStrings.add | foreach {
        $_.connectionString = "your connection string"
    }
    
    $appConfig.Save("D:\temp\App.config")
    
    0 讨论(0)
  • 2020-12-24 07:28

    Given this sample App.config: C:\Sample\App.config:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <connectionStrings>
            <add name="dbConnectionString" 
                 connectionString="Data Source=(local);Initial Catalog=Northwind;Integrated Security=True"/>
        </connectionStrings>
    </configuration>
    

    The following script, C:\Sample\Script.ps1, will read and write a setting:

    # get the directory of this script file
    $currentDirectory = [IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Path)
    # get the full path and file name of the App.config file in the same directory as this script
    $appConfigFile = [IO.Path]::Combine($currentDirectory, 'App.config')
    # initialize the xml object
    $appConfig = New-Object XML
    # load the config file as an xml object
    $appConfig.Load($appConfigFile)
    # iterate over the settings
    foreach($connectionString in $appConfig.configuration.connectionStrings.add)
    {
        # write the name to the console
        'name: ' + $connectionString.name
        # write the connection string to the console
        'connectionString: ' + $connectionString.connectionString
        # change the connection string
        $connectionString.connectionString = 'Data Source=(local);Initial Catalog=MyDB;Integrated Security=True'
    }
    # save the updated config file
    $appConfig.Save($appConfigFile)
    

    Execute the script:

    PS C:\Sample> .\Script.ps1
    

    Output:

    name: dbConnectionString  
    connectionString: Data Source=(local);Initial Catalog=Northwind;Integrated Security=True
    

    Updated C:\Sample\App.config:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <connectionStrings>
        <add name="dbConnectionString" 
             connectionString="Data Source=(local);Initial Catalog=MyDB;Integrated Security=True" />
      </connectionStrings>
    </configuration>
    
    0 讨论(0)
提交回复
热议问题