Suchen

System-Administration mit Microsofts PowerShell Teil 10 XML-Bearbeitung mit der PowerShell

| Autor / Redakteur: Markus Widl / Dipl.-Ing. (FH) Andreas Donner

Im zehnten Teil der PowerShell-Artikelserie zeigt IP-Insider, wie sich XML-Daten mit wenig Aufwand über die PowerShell bearbeiten lassen.

Firma zum Thema

( Archiv: Vogel Business Media )

XML-Daten fällt immer mehr Bedeutung zu, beispielsweise als plattformunabhängiges Austauschformat zwischen Anwendungen oder Diensten. Da ist es oft sehr hilfreich, leistungsfähige Tools zur Bearbeitung dieser Daten an der Hand zu haben.

Auch die PowerShell bietet umfangreiche Möglichkeiten zur XML-Behandlung über einen speziellen Datentyp. Darüber hinaus kann dabei die große PowerShell-Stärke, der Pipeline Processor, eingesetzt werden.

XML-Daten laden und speichern

Variablen, die XML-Daten enthalten sollen, müssen bei der ersten Verwendung über [XML] deklariert werden. Die Daten selbst können direkt übergeben oder aus einer Datei geladen werden. Beispiele:

[XML]$x = „Mustermann“[XML]$x = get-content c:\mitarbeiter.xml

Das Speichern der XML-Daten wird über die Methode Save der XML-Klasse erledigt. Dort werden mit dem Parameter Pfad und Dateiname übergeben:

$x.Save(„c:\ausgabe.xml“)

Auswerten von XML-Daten

Das Auslesen von XML-Daten in einer Variablen gestaltet sich recht einfach, indem die Bezeichner aus der Elementhierarchie genutzt werden. Anhand folgender Daten soll dies verdeutlicht werden:

Meier(0123)4567Schuster(0987)6543

Wird der Inhalt von $x ausgegeben, erscheint nur das Root-Element Mitarbeiter:

PS C:\> $xMitarbeiter-----------Mitarbeiter

Die tiefer liegenden Elemente können über ihre Bezeichner angesprochen werden. Diese werden mit einem Punkt vom Variablennamen getrennt.

PS C:\> $x.MitarbeiterPerson------{Meier, Schuster}

Dieses Spiel lässt sich nun immer weiter fortführen:

PS C:\> $x.Mitarbeiter.PersonName Tel---- ---Meier (0123)4567Schuster (0987)6543

Werden wie im vorhergehenden Fall mehrere Elemente geliefert, kann über die Arrayindizierung direkt darauf zugegriffen werden:

PS C:\> $x.Mitarbeiter.Person[0]Name Tel---- ---Meier (0123)4567

Außerdem können die Elemente auch über die PowerShell-Pipeline weiterverarbeitet werden, etwa mit dem Cmdlet where-object zur Suche nach den Daten eines bestimmten Mitarbeiters:

$x.Mitarbeiter.Person | where-object { $_.Name -eq „Meier“ }

XML-Elemente anlegen

Ein neues XML-Element wird über die Methode CreateElement der XML-Klasse angelegt. Als Parameter wird dabei der gewünschte Name des neuen Elements übergeben.

$e = $x.CreateElement(„Person“)

Soll das neue Element einen Wert erhalten, würde er mit der Methode set_InnerText angegeben. Im Beispiel wäre dies etwa bei einem Name-Element der Fall.

$e.set_InnerText(„Bauer“)

CreateElement gibt das neue Element zurück, es ist jedoch noch nicht in die vorhandene XML-Struktur eingebunden. Dies muss erst über die Methode AppendChild an der gewünschten Stelle vorgenommen werden.

$x.Mitarbeiter.AppendChild($e)

Das Entfernen vorhandener Elemente wird mit RemoveChild durchgeführt, wobei als Parameter das entsprechende XML-Element-Objekt übergeben wird.

XML-Attribute hinzufügen

Neben neuen XML-Elementen können auch Attribute angelegt werden. Das Vorgehen ist dabei ähnlich. Zuerst wird über CreateAttribute das neue Attribut erstellt.

$a = $x.CreateAttribute(„Ersteller“)

Als nächstes wird der gewünschte Wert über die Methode set_Value gesetzt.

$a.set_Value(„Schmidt“)

Zuletzt wird das neue Attribut mit SetAttributeNode zum zugehörigen Element hinzugefügt.

$x.Mitglieder.SetAttributeNode($a)

Auch hier gibt es mit RemoveAttribute eine Methode zum Entfernen.

Wie so oft lohnt es sich, den Aufbau der auftretenden Objekte mit Hilfe des Cmdlets get-member aufzulisten, um alle verfügbaren Eigenschaften und Methoden zu ermitteln und weitere Bearbeitungsmöglichkeiten zu entdecken.

Anhand der gezeigten Beispiele wird die Leistungsfähigkeit der PowerShell bei der XML-Daten-Bearbeitung deutlich. Entwickler, die bisher mit VBScript und den Microsoft COM-Objekten zur XML-Bearbeitung gearbeitet haben, werden dies zu schätzen wissen.

Im nächsten Teil der PowerShell-Artikelserie zeigt IP-Insider, wie der neue Microsoft Exchange Server 2007 die PowerShell zur Konfiguration und Administration nutzt.

Artikelfiles und Artikellinks

(ID:2004868)