Okay, endnu en hurtig lektion i at finde XML.

En XML-knude som denne:

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

Anvender navnet som en attribut. Jeg har lige skrevet et indlæg om, hvordan du søger i XML efter node-attribut.

Men det vil ikke hjælpe dig en tøddel mod nodens faktiske tekstværdi.

<server>DomainController1</server>

Totalt anderledes bæst. Tricket her er at bruge “text()”-metoden.

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

Oh ja… Det er det gode stof.

Du kan også søge et par niveauer længere nede. Her er et eksempel fra en Remote Desktop Connection Manager-fil.

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

Hvis jeg vil have fat i GROUP-knuden, der har SERVER med navnet DomainController1.myDomain.demo i den… Det kan jeg gøre med XPath og 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'

Sådan får jeg fat i navneknuden for den server, der er i gruppen. Kan du se, hvor tæt det er? Er du ikke allerede ved at lære det?

På engelsk kan denne XPath-angivelse oversættes til: “Giv mig noden NAME, der har tekstværdien DomainController1.MyDomain.demo, som er childnode til en node kaldet properties, som er child til en node kaldet server, som er child til en node kaldet group. OG, at group-knuden kan være hvor som helst i XML.”

Vi definerer uden for parentesen den knude, vi ønsker at modtage. Vi definerer inden for parentesen evalueringerne for at komme dertil.

Da jeg vil have GROUP-knuden, propper jeg alt andet inden for parentesen.

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

Nu returnerer det group-knuden. Du er klar til at klone knuden, opdatere attributter eller indsætte en underknude og derefter gemme det opdaterede XML-objekt tilbage til den oprindelige XML-fil.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.