Analizar archivos XML usando PowerShell

  1. Analizar elementos XML de PowerShell
  2. Analizar atributos XML de PowerShell
Analizar archivos XML usando PowerShell

El lenguaje de marcado extensible o formato XML todavía se usa ampliamente en la actualidad. Los archivos de configuración, las fuentes RSS y los archivos de Office son solo algunos ejemplos que usan el formato XML.

El uso de Windows PowerShell para analizar archivos XML es un paso esencial en nuestro recorrido por PowerShell. Este artículo discutirá cómo podemos analizar archivos XML usando Windows PowerShell.

Analizar elementos XML de PowerShell

Primero, cubramos una de las formas más populares y fáciles de usar PowerShell para analizar XML con Select-XML. El comando de PowerShell Select-Xml nos permite proporcionar un archivo o cadena XML y un filtro XPath para extraer información específica.

Tenemos un archivo XML en muchas PC que nos gustaría analizar con PowerShell. Por ejemplo, cada máquina tiene un nombre, una dirección IP y un elemento Incluir que se puede utilizar en un informe.

XML de ejemplo:

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

Queremos usar PowerShell para analizar este archivo XML y obtener los nombres de las computadoras. Para hacer eso, podríamos usar el comando Select-XML.

Por ejemplo, en el archivo de arriba, los nombres de las computadoras aparecen en el texto interno (InnerXML) del elemento “Nombre”.

Primero proporcionaríamos el XPath apropiado para encontrar los nombres de las computadoras. Solo los nodos Nombre contenidos en los elementos Equipo se devolverían utilizando esta técnica XPath.

Luego, utilizando un bucle ForEach-Object, llegue a la propiedad Node.InnerXML en cada elemento Name para obtener solo el InnerXML de ese elemento.

Código de ejemplo:

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

Analizar atributos XML de PowerShell

Ahora adoptemos un nuevo enfoque para localizar nombres de equipos. En lugar de estar representados por elementos XML, los descriptores informáticos se expresan directamente mediante atributos XML.

A continuación se muestra un archivo XML de ejemplo con descriptores de computadora representados con atributos. Ahora podemos ver cada descriptor como un atributo en lugar de un elemento.

Código de ejemplo:

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

Dado que cada descriptor es un atributo, modifique el XPath solo para encontrar los elementos Computer. Luego, utilizando un cmdlet ForEach-Object, busque el valor del atributo name.

Código de ejemplo:

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

Producción :

WINPC-01
WINPC-02
WINPC-03

Ya sea que estemos leyendo elementos o atributos, la sintaxis de Select-Xml es engorrosa: nos obliga a usar el parámetro XPath, luego canalizar el resultado a un bucle y finalmente buscar los datos en la propiedad Nodo. .

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

Artículo relacionado - PowerShell XML