我需要更新XML文件的network host
部分。您将从下面的示例中看到,四个部分是双引号。我发现在我的PowerShell脚本中使用双引号更新很困难。我已经通过WWW和StackOverflow上的一些帖子阅读了解决方案。我包括我当前代码中的行和xml中的输出。欢迎在这方面提供任何帮助。
运行PowerShell后,XML中的预期结果。
<system.net>
<mailSettings>
<smtp>
<network host="mailtrap.io" port="1234" userName="3987455k61f63dd421" password="d6jjjcfc2bf76889" />
</smtp>
PowerShell代码
$root.SelectSingleNode("//system.net/mailSettings/smtp/network").host= "`"mailtrap.io`" port=`"1234`" userName=`"3987455k61f63dd421`" password=`" d6jjjcfc2bf76889`""
代码运行后的XML实际输出(请注意"
而不是"
):
<network host=""mailtrap.io" port="25252" userName=" 3987455k61f63dd421" password="d6jjjcfc2bf76889"" />
答案 0 :(得分:0)
您误解了XML的结构。您没有network host
节点,但network
节点有4个属性:
host
port
userName
password
您需要分别为每个属性分配值:
$node = $root.SelectSingleNode('//system.net/mailSettings/smtp/network')
$node.host = 'mailtrap.io'
$node.port = '1234'
$node.userName = '3987455k61f63dd421'
$node.password = 'd6jjjcfc2bf76889'
如果节点中尚未存在属性,您可以像这样创建它们:
$attr = $root.CreateAttribute('host')
$attr.Value = 'mailtrap.io'
$node.Attributes.Append($attr)