PowerShell を使用して XML ファイルを解析する

Marion Paul Kenneth Mendoza 2023年6月21日
  1. PowerShell XML 要素の解析
  2. PowerShell XML 属性を解析する
PowerShell を使用して XML ファイルを解析する

Extensible Markup Language または XML 形式は、今日でも広く使用されています。 構成ファイル、RSS フィード、および Office ファイルは、XML 形式を使用するほんの一例です。

Windows PowerShell を使用して XML ファイルを解析することは、PowerShell の旅の重要なステップです。 この記事では、Windows PowerShell を使用して XML ファイルを解析する方法について説明します。

PowerShell XML 要素の解析

まず、PowerShell を使用して Select-XML で XML を解析する最も一般的で簡単な方法の 1つを取り上げましょう。 Select-Xml PowerShell コマンドを使用すると、XML ファイルまたは文字列と XPath フィルターを指定して特定の情報を引き出すことができます。

PowerShell で解析したい多くの PC に XML ファイルがあります。 たとえば、各マシンには名前、IP アドレス、およびレポートで使用できる Include 要素があります。

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>

PowerShell を使用してこの XML ファイルを解析し、コンピューター名を取得します。 これを行うには、Select-XML コマンドを使用できます。

たとえば、上記のファイルでは、コンピューター名は Name 要素の内部テキスト (InnerXML) に表示されます。

最初に適切な XPath を提供して、コンピューター名を見つけます。 Computer 要素に含まれる Name ノードのみが、この XPath 手法を使用して返されます。

次に、ForEach-Object ループを使用して、各 Name 要素の Node.InnerXML プロパティに到達し、その要素の InnerXML のみを取得します。

コード例:

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

PowerShell XML 属性を解析する

次に、コンピューター名を見つけるための新しいアプローチを取りましょう。 コンピュータ記述子は、XML 要素で表現されるのではなく、XML 属性で直接表現されます。

以下は、属性で表されたコンピューター記述子を含む XML ファイルの例です。 各記述子を要素ではなく属性として見ることができます。

コード例:

<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>

各記述子は属性であるため、Computer 要素を見つけるためだけに XPath を微調整します。 次に、ForEach-Object コマンドレットを使用して、name 属性の値を見つけます。

コード例:

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

出力:

WINPC-01
WINPC-02
WINPC-03

要素を読み取るか属性を読み取るかにかかわらず、Select-Xml の構文は面倒です。XPath パラメータを使用し、結果をループにパイプして、最後に Node プロパティの下でデータを探す必要があります。 .

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

関連記事 - PowerShell XML