【发布时间】:2019-12-26 11:56:07
【问题描述】:
当我通过使用Get-Content 读取 XML 文件并将其转换为 XML 并将新节点插入其中来解析 xml 文件时,PowerShell 会回显新创建节点的内容。为什么 PowerShell 会这样做?
$proj = [xml](Get-Content $project.AbsolutePath)
$element = $proj.CreateElement("Version");
$element.InnerText = "1.0.0";
$proj.Project.PropertyGroup.AppendChild($element);
Write-Host "OK"
在那之后真的没有其他代码了。但它仍然呼应了以下文字:
好的 #文本 ----- 1.0.0我尝试将变量$element 设置为$null,以防万一有一些奇怪的全局变量我不应该碰。我什至告诉脚本在脚本结束时退出。
当我绕过插入新节点的执行时,脚本末尾不会写入额外的文本。
【问题讨论】:
-
AppendChild() 返回新节点,PowerShell 正在显示该节点,因为它不知道如何处理它。这样的事情会阻止:
$proj.Project.PropertyGroup.AppendChild($element) | Out-Null -
除了
boxdog提到的之外,sequence 是无序的,因为Write-Host直接进入屏幕,而输出流稍微延迟以查看是否还有更多可以与之分组的。直接=right freaking NOW。间接 =slight delay. -
PowerShell 延迟输出以便能够在同一标题下进行汇总,这具有不总是保持顺序的副作用。否则按照@boxdog 的建议进行操作。
-
谢谢你们!你让我大吃一惊! @boxdog 如果您可以将其写为答案,我可以给您一个赞成票并将该线程标记为已关闭:)
标签: xml powershell powershell-4.0