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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn