mah*_*esh 2 powershell powershell-2.0
我正在尝试使用PowerShell更改web.config文件中的应用程序设置
以下是web.config文件;
<configuration>
<connectionStrings>
<add name="TestDBEntities" connectionString="metadata=res://*/TestProject.csdl|res://*/TestProject.ssdl|res://*/TestProject.msl;provider=System.Data.SqlClient;provider connection string="data source=SQL01;initial catalog=TestDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
<appSettings>
<add key="ActivePeriod" value="false" />
<add key="Environment" value="UAT" />
<add key="authmode" value="4" />
<add key="IsEncryptedConfig" value="true" />
<add key="LogErrorsToText" value="true" />
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我想更改应用程序设置值。为此,我将所有相应的值存储在PowerShell字典中。这是我的字典。
Key Value
----- -----
ActivePeriod true
Environment prod
LogErrorsToText false
Run Code Online (Sandbox Code Playgroud)
现在,我想将每个Dictionary键与appsetting键进行匹配。如果任何字典键与appsetting键匹配,则应替换相应的值。就我而言,我期望以下输出;
<configuration>
<connectionStrings>
<add name="TestDBEntities" connectionString="metadata=res://*/TestProject.csdl|res://*/TestProject.ssdl|res://*/TestProject.msl;provider=System.Data.SqlClient;provider connection string="data source=SQL01;initial catalog=TestDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
<appSettings>
<add key="ActivePeriod" value="true" />
<add key="Environment" value="prod" />
<add key="authmode" value="4" />
<add key="IsEncryptedConfig" value="true" />
<add key="LogErrorsToText" value="false" />
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
有人可以建议我可能的解决方案。提前致谢。
遍历Keys字典中的,并<add />在Xml文档中找到相应的节点,然后设置属性(如果找到):
$xml = [xml](Get-Content .\app.config)
$Dictionary = @{
ActivePeriod = 'true'
Environment = 'prod'
LogErrorsToText = 'false'
}
foreach($key in $Dictionary.Keys)
{
Write-Host "Locating key: '$key' in XML"
# Use XPath to find the appropriate node
if(($addKey = $xml.SelectSingleNode("//appSettings/add[@key = '$key']")))
{
Write-Host "Found key: '$key' in XML, updating value to $($Dictionary[$key])"
$addKey.SetAttribute('value',$Dictionary[$key])
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4464 次 |
| 最近记录: |