我需要一些幫助,以使用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
下一次,包括您嘗試過的代碼無效,因此我們可以幫助您修復代碼 –