PowerShell修改XML文件内容失败的问题排查及修正方案咨询
PowerShell修改XML文件内容失败的问题排查及修正方案咨询
嗨,我来帮你梳理下脚本里的问题,看看为什么会报错:
错误原因分析
你遇到的PropertyNotFound错误,主要是因为XML节点的访问路径不完整,还有一处明显的拼写错误:
- 访问Core下的节点时,漏掉了根节点
Topology,正确的路径应该从$xmldata.Topology开始,而不是直接$xmldata.Core - 修改AppCredentials下的账号密码时,同样漏掉了上级节点
Credentials,而且你写的$xmldata. AppCredentialsPASSWORD是拼写错误,应该是AppCredentials.PASSWORD
修正后的PowerShell脚本
# 加载XML文件 $xmldata = [XML](Get-Content C:\Config.xml) # 修改Core节点下的SERVER1和SERVER2 $xmldata.Topology.Core.SERVER1.InnerText = 'Admin' $xmldata.Topology.Core.SERVER2.InnerText = 'Nimda' # 修改Credentials下AppCredentials的账号密码 $xmldata.Topology.Credentials.AppCredentials.USERNAME.InnerText = 'Account' $xmldata.Topology.Credentials.AppCredentials.PASSWORD.InnerText = '123' # 保存修改后的XML文件 $xmldata.Save((Resolve-Path C:\Config.xml).Path)
验证效果
运行这个修正后的脚本后,你的XML文件就会变成你期望的样子:
return (<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> )
备注:内容来源于stack exchange,提问作者Mohan
相关产品推荐
相关产品推荐

