我有一个XML文件的解压缩默认安装,预先填充了XML设置,就像这样......
<system.web>
<compilation targetFramework="4.6.1" debug="false" />
<httpRuntime targetFramework="4.6.1" requestPathInvalidCharacters=""/>
</system.web>
我在每个版本上都要进行一系列环境更改,因此它会在system.web部分添加一行...
<system.web>
<compilation targetFramework="4.6.1" debug="false" />
<httpRuntime targetFramework="4.6.1" requestPathInvalidCharacters=""/>
<customErrors mode="Off" />
</system.web>
这将用于八达通部署,我相信使用Powershell 2.0作为其基础。
在Powershell脚本中,我该如何添加... customErrors mode =&#34; Off&#34; / ...声明到该XML文件的现有system.web部分?
提前致谢 (先前链接的重复问题不是一个简明的答案 - 谢谢)
答案 0 :(得分:1)
经过大量的反复试验,找到了......
我之前的XML ......
<?xml version="1.0"?>
<configuration>
<anothernode>
<notalot target="1" debug="dish" />
</anothernode>
<system.web>
<compilation targetFramework="4.6.1" debug="false" />
<httpRuntime targetFramework="4.6.1" requestPathInvalidCharacters="" />
</system.web>
</configuration>
Powershell代码,我选择使用$ var值,但没有什么可以阻止你在代码中加入硬编码的东西,记住&#39;&#39;&#39;尽管如此引用它们!
# This will add <customErrors mode="Off" /> to the system.web section
$filename = "C:\Users\user\Desktop\Neil\newxmlsettings.xml"
$var1 = 'customErrors'
$var2 = 'mode'
$var3 = 'Off'
#
[xml]$xml = Get-Content $filename
$body = [xml]$xml
$newnode = $body.CreateElement($var1)
$newnode.SetAttribute($var2,$var3)
$body.SelectSingleNode("//system.web").AppendChild($newnode)
$xml.Save($filename)
&#34; system.web&#34;只需要在AppendChild语句的引号中,因为它有一个。在其中,对于单个元素名称,您可以省略它周围的双引号。
最终XML ......
<?xml version="1.0"?>
<configuration>
<anothernode>
<notalot target="1" debug="dish" />
</anothernode>
<system.web>
<compilation targetFramework="4.6.1" debug="false" />
<httpRuntime targetFramework="4.6.1" requestPathInvalidCharacters="" />
<customErrors mode="Off" />
</system.web>
</configuration>