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 .

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