尝试编辑 unattended.xml 时在此对象上找不到 Powershell 抛出 属性 '...'

Powershell throwing Property '...' cannot be found on this object when trying to edit unattended.xml

我正在尝试编写一个脚本,以便将来轻松自定义我的 MDT 服务器/部署。

$xml = New-Object System.Xml.XmlDocument
$xml.Load($filePath)

$xml.unattend.settings.component.UserData.FullName = "MYUSER"
$xml.unattend.settings.component.UserAccounts.AdministratorPassword.Value = "Password"


Write-Verbose $xml.OuterXml
$xml.Save($filePath)

这是我到目前为止整理的代码。我正在使用 https://virtualfeller.com/unattend-xml-windows-10/ 中的示例 XML 文件进行调试。

正在更改 AdministratorPassword>Value 节点没有问题,但 FullName 节点向我抛出“找不到对象错误”。

有趣的是,如果我使用生产中使用的 XML 的副本 即使“路径”相同,也找不到 节点。

我对 Powershell 脚本很陌生,所以我不确定是否或如何使用此处解释的路径表达式 https://www.w3schools.com/xml/xpath_syntax.asp

我已经尝试过此处所述的索引设置和组件here,遗憾的是没有成功。

提前感谢您的帮助

您的 XML 有多个设置,每个设置都有多个组件。

所以你需要找到正确的索引来访问正确的数据。 以您的示例为例,您需要修改位于第二个 ComponentUserData 中的 FullName ] 位于第一个 Settings :

$xml.unattend.settings[0].component[1].UserData.FullName = "MYUSER"

最安全的方法是使用Xpath,但由于该文件中有不同的命名空间,可能会有点困难! (查看此答案以获取示例:PowerShell XML SelectNodes fails to process XPath