Va bene, un’altra rapida lezione per trovare XML.

Vedi, un nodo XML come questo:

<server name="DomainController1"></server>

Usa il nome come attributo. Ho appena scritto un post su come cercare XML per attributo del nodo.

Ma questo non ti servirà a nulla contro il valore testuale effettivo del nodo.

<server>DomainController1</server>

Bestia completamente diversa. Il trucco qui è usare il metodo “text()”.

$XML | Select-Xml -Xpath '//server'

Oh sì… Questa è la roba buona.

Puoi anche cercare qualche livello più in basso. Ecco un esempio da un file di Remote Desktop Connection Manager.

<group> <properties> <expanded>True</expanded> <name>DomainControllers</name> </properties> <logonCredentials inherit="None"> <profileName scope="File">myDomain\myAccount</profileName> </logonCredentials> <server> <properties> <name>DomainController1.myDomain.demo</name> </properties> </server></group>

Se voglio ottenere il nodo GROUP che ha il SERVER chiamato DomainController1.myDomain.demo in esso… posso farlo con XPath e Select-XML.

#This isn't exactly it, but it's a learning step to help you better understand.$xml | Select-XML -XPath '//group/server/properties/name'

Ecco come ottenere il nodo name del server che è nel gruppo. Vedi quanto è vicino? Non stai già imparando?

In inglese, questa dichiarazione XPath si traduce in “Dammi il nodo NAME che ha il valore testuale di DomainController1.MyDomain.demo, che è il childnode di un nodo chiamato properties, che è figlio di uno chiamato server, che è figlio di un nodo chiamato group. E, quel nodo gruppo potrebbe essere ovunque nell’XML.”

Definiremo fuori dalle parentesi il nodo che vogliamo ricevere. Definiamo all’interno delle parentesi le valutazioni per arrivarci.

Siccome voglio il nodo GROUP, sto per infilare tutto il resto dentro le parentesi.

$xml | Select-XML -XPath '//group'

Ora questo restituisce il nodo group. Sei pronto per clonare il nodo, aggiornare gli attributi o inserire un nodo figlio e poi salvare l’oggetto XML aggiornato nel file XML originale.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.