我需要一些帮助,以使用Powershell构建XML文件。我从来没有这样做过。构建自定义XML文件
刚开始的时候我觉得很幸运,试过了“Export-Clixml”,但是它不会像我想要的那样产生输出。我需要干净的XML。
我有一个现有的XML的文件,它看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<DeploymentScript>
<Settings>
...
</Settings>
</DeploymentScript>
我宣读了XML的设置,并做一些东西在PowerShell中。我创建一个对象,它看起来像这样:
TaskSequenceNumber TaskSequenceName
------------------ ----------------
0 01_Base
1 02_XA
我要救这个对象在我的XML文件。 (追加) 的XML文件应该最终是这样的:
<?xml version="1.0" encoding="utf-8"?>
<DeploymentScript>
<Settings>
...
</Settings>
<Deploy>
<SequenceData>
<TaskSequenceNumber>1</TaskSequenceNumber>
<TaskSequenceName>01_Base</TaskSequenceName>
</SequenceData>
<SequenceData>
<TaskSequenceNumber>2</TaskSequenceNumber>
<TaskSequenceName>02_XA</TaskSequenceName>
</SequenceData>
</Deploy>
</DeploymentScript>
我已经尝试了一些.NET XML的方法,但我没有得到一个结果。 有人会举例说明如何做到这一点?
。
编辑: 感谢“Frode F.”!这里的最新代码:
$xml = [xml]@"
<?xml version="1.0" encoding="utf-8"?>
<DeploymentScript>
<Settings>
...
</Settings>
</DeploymentScript>
"@
#$xml = [xml](Get-Content -Path "$env:USERPROFILE\Desktop\Deploy-Settings.xml")
$TaskSequences = [pscustomobject]@{TaskSequenceNumber=0;TaskSequenceName="01_Base"},[pscustomobject]@{TaskSequenceNumber=1;TaskSequenceName="02_XA"}
#Add Deploy-node
$DeployNode = $xml.CreateElement("Deploy")
$xml.DeploymentScript.AppendChild($DeployNode) > $null
foreach ($element in $TaskSequences) {
$SeqDataNode = ([xml]@"
<SequenceData>
<TaskSequenceNumber>$($element.TaskSequenceNumber + 1)</TaskSequenceNumber>
<TaskSequenceName>$($element.TaskSequenceName)</TaskSequenceName>
</SequenceData>
"@).FirstChild
#Add to Deploy-node
$DeployNode.AppendChild($xml.ImportNode($SeqDataNode,$true)) > $null
}
$xml.Save("$env:USERPROFILE\Desktop\Test.xml")
您确定该模式吗?多个根节点会产生错误。你需要把设置和部署在里面 –
对不起,我没有太多的XML经验。用XML记事本创建了这个例子。我已经更新了提到的XML。希望现在好了。 – Walhalla
下一次,包括您尝试过的代码无效,因此我们可以帮助您修复代码 –