Hola estoy tratando de cambiar los valores de una cadena de conexión para una web.archivo de configuración, pero recibiendo el error:

La propiedad 'connectionString' no se encuentra en este objeto. Compruebe que la propiedad existe y puede ser ajustado.

Aquí está el script que estoy usando:

$webConfig = 'C:\Users\test\Desktop\web\web.config'
$doc = (Get-Content $webConfig) -as [Xml]
$obj = $doc.configuration.appSettings.add | where {$_.Key -eq 'CommandTimeOut'}
$obj.value = '60'
$config = [xml](gc $webConfig)  
$con= $config.configuration.connectionStrings.add|where-object{$_.name -eq "password"};

$con.connectionString = $con.connectionString -replace "123456", "admin1234"

$doc.Save($webConfig)

He modificado el código de la siguiente, pero aún no funciona y me da el mismo error.

$cfg = [xml](gc $webConfig) 
$con= $cfg.configuration.connectionStrings.add|where-object{$_.name -eq "password"};
$cfg.configuration.connectionStrings.add.connectionString=   
$cfg.configuration.connectionStrings.add.connectionString -replace "123456","admin123"
$doc.Save($webConfig)
puede compartir la web.config ? al menos el <connectionStrings> parte ?
<add name=»pertenencia» connectionString=»Data Source=server1;Initial Catalog=inventario;MultipleActiveResultSets=true;user id=inventoryWebUser;password=123456″ providerName=»System.De datos.SqlClient» />

OriginalEl autor san | 2014-08-22

3 Comentarios

  1. 7

    Tarde, pero sólo en caso de que alguien puede encontrar un uso para él, he escrito una re-utilizables de Energía-Shell hacer para que.

        #set the value of this to your own db config
    $myConnectionString = "Data Source=.;Initial Catalog=<Database>;Integrated Security=True";
    
    $webConfig = '.\Api\Web.config'
    $dbUpConfig = '.\Database\App.config'
    $unitTestConfig = '.\Test\App.config'
    
    Function updateConfig($config) 
    { 
    $doc = (Get-Content $config) -as [Xml]
    $root = $doc.get_DocumentElement();
    $activeConnection = $root.connectionStrings.SelectNodes("add");
    $activeConnection.SetAttribute("connectionString", $myConnectionString);
    $doc.Save($config)
    } 
    
    updateConfig($webConfig)
    updateConfig($dbUpConfig)
    updateConfig($unitTestConfig)

    OriginalEl autor Illuminati

  2. 3

    aquí es un paso-por-paso ejemplo :

    [xml]$x='<connectionStrings>
    <add name="membership" connectionString="Data Source=server1;Initial Catalog=inventory;MultipleActiveResultSets=true;user id=inventoryWebUser;password=123456" providerName="System.Data.SqlClient" />
    <add name="test" connectionString="Data Source=server1;Initial Catalog=inventory;MultipleActiveResultSets=true;user id=inventoryWebUser;password=123456" providerName="System.Data.SqlClient" />
    </connectionStrings>'
    
    $mycon=$x.connectionStrings.add |?{$_.name -eq "membership"}
    $mycon.connectionString=$mycon.connectionstring -replace "password=123456","password=admin123"
    $x.save("c:\temp\newconf.xml")
    gc c:\temp\newconf.xml
    Para un sitio web.archivo de configuración, comience con $cfg = (Get-Content «C:\inetpub\wwwroot\mysite\web.config») -como [Xml] , entonces $x $cfg.configuración, es decir, $cfg.de configuración.connectionStrings.añadir…

    OriginalEl autor Loïc MICHEL

  3. 1

    una manera sucia podría ser reemplazar el texto sin necesidad de analizar el xml, algo como esto (en caso de que no haya anterior connectionstrings definido ) :

    $replacementstring[email protected]"
    <connectionStrings>
      <add 
        name="NorthwindConnectionString" 
        connectionString="Data Source=serverName;Initial 
        Catalog=Northwind;Persist Security Info=True;User 
        ID=userName;Password=password"
        providerName="System.Data.SqlClient"
      />
    </connectionStrings>
    "@
    
    (gc c:\temp\web.config) -replace "<connectionStrings/>" ,$repl  | out-file c:\temp\new_web.config
    acabo de añadir la cadena de conexión. no estoy seguro de lo que me estoy perdiendo en mi script, que no es la sustitución de la conexión de la cadena de valor. sin embargo, se cambia la «clave» de los valores de acuerdo a la secuencia de comandos
    esto funcionó para mí : $x.configuration.connectionStrings.add.connectionString= $x.configuration.connectionStrings.add.connectionString -replace "123456","admin123"
    sigue recibiendo el mismo error, me acaba de modificar en cuestión. Estoy utilizando el código y su colocación en el camino correcto???
    Su condición where está mal debería ser ` where-object{$_.nombre -eq «pertenencia»}` también la mezcla de $cfg y $con
    si usted mira mi script (secuencia de comandos modificada en cuestión) es bueno para ir, si puedo reemplazar la contraseña con la membresía

    OriginalEl autor Loïc MICHEL

Dejar respuesta

Please enter your comment!
Please enter your name here