我的 XML 文件中有以下内容。我正在尝试使用 powershell 脚本更新 XML 文件
<?xml version="1.0" encoding="utf-8"?>
<Topology>
<Core>
<SERVER1 desc="computer name server"></SERVER1>
<SERVER2 desc="computer name server"></SERVER2>
<CORE1 desc="application core"></CORE1>
<CORE2 desc="application core"></CORE2>
</Core>
<Credentials>
<AppCredentials>
<USERNAME></USERNAME>
<PASSWORD></PASSWORD>
</AppCredentials>
<ServicesCredentials>
<SC_USERNAME></SC_USERNAME>
<SC_PASSWORD></SC_PASSWORD>
<SC_DOMAIN></SC_DOMAIN>
</ServicesCredentials>
</Credentials>
</Topology>
我编写了以下内容以便更新 XML 文件。但是,它没有按预期工作。
$xmldata =[XML](Get-Content C:\Config.xml)
$xmldata. Core.SERVER1.InnerText = 'Admin'
$xmldata. Core.SERVER2.InnerText = 'Nimda'
$xmldata. AppCredentials.USERNAME.InnerText = 'Account'
$xmldata. AppCredentialsPASSWORD.InnerText = '123'
$xmldata. Save((Resolve-Path C:\Config.xml). Path)
我收到以下错误。
无法在此对象上找到属性“InnerText”。请验证该属性是否存在并且可以设置。位于 C:\Users\Administrator\Documents\replacetokendistributedtest.ps1:2 char:1
- $xmldata.Core.SERVER2.InnerText = 'Nimda'
-
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : PropertyNotFound
最后,当我们运行上述脚本时,XML 文件应该如下所示
<?xml version="1.0" encoding="utf-8"?>
<Topology>
<Core>
<SERVER1 desc="computer name server">Admin</SERVER1>
<SERVER2 desc="computer name server">Nimda</SERVER2>
<CORE1 desc="application core"></CORE1>
<CORE2 desc="application core"></CORE2>
</Core>
<Credentials>
<AppCredentials>
<USERNAME>Account</USERNAME>
<PASSWORD>123</PASSWORD>
</AppCredentials>
<ServicesCredentials>
<SC_USERNAME></SC_USERNAME>
<SC_PASSWORD></SC_PASSWORD>
<SC_DOMAIN></SC_DOMAIN>
</ServicesCredentials>
</Credentials>
</Topology>
请让我知道是否需要进行任何其他更改才能实现此功能
答案1
$xmldata = [XML](Get-Content C:\temp\config.xml)
$xmldata.Topology.Core.SERVER1.desc = 'Admin'
$xmldata.Topology.Core.SERVER2.desc = 'Nimda'
$xmldata.Topology.Credentials.AppCredentials.USERNAME = 'Account'
$xmldata.Topology.Credentials.AppCredentials.PASSWORD = '123'
$xmldata. Save("C:\temp\Config.xml")
但这不是一种安全的方式,因为凭证以明文形式保存在一个简单的文本文件中(xml 文件是一个文本文件)。
问候