Analysieren Sie XML-Dateien mit PowerShell

  1. Analysieren Sie PowerShell-XML-Elemente
  2. Analysieren Sie PowerShell-XML-Attribute
Analysieren Sie XML-Dateien mit PowerShell

Die Extensible Markup Language oder das XML-Format ist auch heute noch weit verbreitet. Konfigurationsdateien, RSS-Feeds und Office-Dateien sind nur einige Beispiele, die das XML-Format verwenden.

Die Verwendung von Windows PowerShell zum Analysieren von XML-Dateien ist ein wesentlicher Schritt auf unserer PowerShell-Reise. In diesem Artikel wird erläutert, wie wir XML-Dateien mit Windows PowerShell analysieren können.

Analysieren Sie PowerShell-XML-Elemente

Lassen Sie uns zunächst eine der beliebtesten und einfachsten Möglichkeiten behandeln, PowerShell zum Analysieren von XML mit Select-XML zu verwenden. Mit dem PowerShell-Befehl Select-Xml können wir eine XML-Datei oder -Zeichenfolge und einen XPath-Filter bereitstellen, um bestimmte Informationen herauszuziehen.

Wir haben auf vielen PCs eine XML-Datei, die wir mit PowerShell analysieren möchten. Beispielsweise hat jede Maschine einen Namen, eine IP-Adresse und ein Include-Element, das in einem Bericht verwendet werden kann.

Beispiel-XML:

<Computers>
	<Computer>
		<Name>WINPC-01</Name>
		<Ip>127.0.0.1</Ip>
		<Include>true</Include>
	</Computer>
	<Computer>
		<Name>WINPC-02</Name>
		<Ip>192.168.1.105</Ip>
		<Include>false</Include>
	</Computer>
	<Computer>
		<Name>WINPC-03</Name>
		<Ip>192.168.1.104</Ip>
		<Include>true</Include>
	</Computer>
</Computers>

Wir möchten PowerShell verwenden, um diese XML-Datei zu analysieren und die Computernamen abzurufen. Dazu könnten wir den Befehl Select-XML verwenden.

In der obigen Datei erscheinen die Computernamen beispielsweise im inneren Text (InnerXML) des Name-Elements.

Wir würden zuerst den entsprechenden XPath angeben, um die Computernamen zu finden. Mit dieser XPath-Technik würden nur die in den Computer-Elementen enthaltenen Name-Knoten zurückgegeben.

Erreiche dann mit einer ForEach-Object-Schleife die Node.InnerXML-Eigenschaft für jedes Name-Element, um nur die InnerXML dieses Elements zu erhalten.

Beispielcode:

Select-Xml -Path C:\PS\sample.xml -XPath '/Computers/Computer/Name' | ForEach-Object { $_.Node.InnerXML }

Analysieren Sie PowerShell-XML-Attribute

Lassen Sie uns nun einen neuen Ansatz zum Auffinden von Computernamen verfolgen. Statt durch XML-Elemente dargestellt zu werden, werden Computerdeskriptoren direkt durch XML-Attribute ausgedrückt.

Nachfolgend finden Sie eine Beispiel-XML-Datei mit Computerdeskriptoren, die durch Attribute dargestellt werden. Wir können jetzt jeden Deskriptor als Attribut statt als Element sehen.

Beispielcode:

<Computers>
	<Computer name="WINPC-01" ip="127.0.0.1" include="true" />
	<Computer name="WINPC-02" ip="192.168.1.104" include="false" />
	<Computer name="WINPC-03" ip="192.168.1.105" include="true" />
</Computers>

Da jeder Deskriptor ein Attribut ist, optimieren Sie den XPath nur, um die Computer-Elemente zu finden. Suchen Sie dann mithilfe eines ForEach-Object-Cmdlets den Wert des name-Attributs.

Beispielcode:

Select-Xml -Path C:\Work\computers-attr.xml -XPath '/Computers/Computer' | ForEach-Object { $_.Node.name }

Ausgang:

WINPC-01
WINPC-02
WINPC-03

Unabhängig davon, ob wir Elemente oder Attribute lesen, die Syntax von Select-Xml ist umständlich: Sie zwingt uns, den Parameter XPath zu verwenden, dann das Ergebnis in eine Schleife zu leiten und schließlich unter der Eigenschaft Node nach den Daten zu suchen .

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Verwandter Artikel - PowerShell XML