2017-02-24 3 views
1

ich Daten, die aus einer XML-Datei und wollen ein Objekt wie folgt erhalten:Powershell: XML Object

TaskSequenceNumber TaskSequenceName 
------------------ ---------------- 
1     01_Base 
2     02_ABC 

Die XML-Datei wie folgt aussieht:

$xml = [xml]@" 
<?xml version="1.0" encoding="utf-8"?> 
<DeploymentScript> 
    <Settings> 
    ... 
    </Settings> 
    <TaskSequences> 
    <Sequence1> 
     <TaskSequenceNumber>1</TaskSequenceNumber> 
     <TaskSequenceName>01_Base</TaskSequenceName> 
    </Sequence1> 
    <Sequence2> 
     <TaskSequenceNumber>2</TaskSequenceNumber> 
     <TaskSequenceName>02_ABC</TaskSequenceName> 
    </Sequence2> 
    </TaskSequences> 
</DeploymentScript> 
"@ 

$xml.DeploymentScript.TaskSequences 

Der Code oben ist für einfache Kopie vorbereitet & einfügen in ISE, wenn jemand es versuchen möchte. Über den Namen der Knoten Sequence1 und Sequence2 bin ich mir noch nicht sicher. Vielleicht könnten sie in $TaskSequenceName oder $TaskSequenceNumber umbenannt werden.

.

EDIT:

Ich bin wirklich leid, aber ich brauche meine Bitte um es wieder zu öffnen. Ich habe versucht, die veröffentlichte Lösung von Martin zu implementieren, aber ich kam in Schwierigkeiten. Sehen Sie sich das folgende Beispiel an:

Clear-Host 

Function Simple-Test { 

    Param 
    (
     [Parameter(Mandatory=$true,position=0)] 
     [string]$ControlObject 
    ) 

    $ControlObject | Format-Table 

} 

$xml = [xml]@" 
<?xml version="1.0" encoding="utf-8"?> 
<DeploymentScript> 
    <Settings> 
    ... 
    </Settings> 
    <TaskSequences> 
    <Sequence1> 
     <TaskSequenceNumber>1</TaskSequenceNumber> 
     <TaskSequenceName>01_Base</TaskSequenceName> 
    </Sequence1> 
    <Sequence2> 
     <TaskSequenceNumber>2</TaskSequenceNumber> 
     <TaskSequenceName>02_ABC</TaskSequenceName> 
    </Sequence2> 
    </TaskSequences> 
</DeploymentScript> 
"@ 

Simple-Test -ControlObject $xml.DeploymentScript.TaskSequences.GetEnumerator() 

Das Skript wird nicht funktionieren, wie ich es erwarten würde. Ich bekomme das Ergebnis:

System.Xml.XmlElement System.Xml.XmlElement

Wie dies zu korrigieren?

Vielen Dank!

+0

Remove '[string]' in Zeile 6 –

+0

OMG :-) Danke! – Walhalla

+0

Gern geschehen –

Antwort

2

Sie die Ausgabe durch den Aufruf der Methode GetEnumerator() erhalten:

$xml.DeploymentScript.TaskSequences.GetEnumerator() 

Ausgang:

TaskSequenceNumber TaskSequenceName 
------------------ ---------------- 
1     01_Base   
2     02_ABC   
+1

Hah, das ist es :-) Danke Martin! – Walhalla

+0

Tut mir leid, ich kam in Schwierigkeiten, als ich versuchte, es zu implementieren. Ich habe die Anfrage bearbeitet ... – Walhalla