我无法保存xml PowerShell中的更改

时间:2018-04-22 18:11:25

标签: powershell

我需要更新xml中的一行并保存更改。它看起来很容易,但它对我不起作用,我找不到我的错误( 所以,我需要帮助。 这是我的代码:

[xml]$XmlDocument = Get-Content -Path "C:\Users\Administrator\Documents\Practise\Test.xml"
$random = -join ((48..57) + (97..122) | Get-Random -Count 16 | % {[char]$_})

$node = $XmlDocument.Payment.PaymentOptions.Bank.Value5
$node = $node.Replace('13384wL839', $random)

$XmlDocument.Save("C:\Users\Administrator\Documents\Practise\Test.xml")

有我的xml:

<Payment xmlns="2.0.0">
  <PaymentValue1>
    <value1>180.00</value1>
    <value2>2017-09-30</value2>
    <value3>022456789</value3>
  </PaymentValue1>
  <PaymentOptions>
    <Bank>
      <Value4>Test1</Value4>
      <Value5>13384wL839</Value5>
    </Bank>
  </PaymentOptions>
</Payment>

我看到$ node已更改,但是当我保存新的xml时 - 它仍然显示旧值。

2 个答案:

答案 0 :(得分:1)

由于新值与旧值无关,因此 没有必要更换任何东西,
你只需设定价值。

$File= "C:\Users\Administrator\Documents\Practise\Test.xml"
[xml]$XmlDocument = Get-Content $File
$random = -join ((48..57) + (97..122) | Get-Random -Count 16 | % {[char]$_})

$XmlDocument.Payment.PaymentOptions.Bank.Value5 = $random

$XmlDocument.Save($File)

答案 1 :(得分:0)

您实际上从未将值重新设置回文档。

$XmlDocument.Payment.PaymentOptions.Bank.Value5 = $XmlDocument.Payment.PaymentOptions.Bank.Value5.Replace('13384wL839', $random)

应该做的伎俩。