Alright, another quick lesson in finding XML.
You see, an XML node like this:
<server name="DomainController1"></server>
Uses the name as an attribute. Ik heb net een artikel geschreven over hoe je XML kunt doorzoeken op een attribuut.
Maar daar heb je niets aan als je de werkelijke tekstwaarde van de node vergelijkt.
<server>DomainController1</server>
Totally different beast. De truc hier is om de “text()” methode te gebruiken.
$XML | Select-Xml -Xpath '//server'
Oh ja… Dat is het goede spul.
Je kunt ook een paar niveaus lager zoeken. Hier is een voorbeeld van een Remote Desktop Connection Manager bestand.
<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>
Als ik de GROUP node wil krijgen die de SERVER genaamd DomainController1.myDomain.demo erin heeft… kan ik dat doen met XPath en 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'
Dit is hoe je de naam node krijgt van de server die in de groep zit. Zie je hoe dichtbij dat is? Leer je het niet al?
In het Engels, vertaalt dat XPath statement zich naar “Geef me de NAME node die de tekstwaarde heeft van DomainController1.MyDomain.demo, dat is de childnode van een node genaamd properties, dat is een child van een node genaamd server, dat is het kind van een node genaamd group. EN, die groep node kan overal in de XML staan.”
We definiëren buiten de haakjes de node die we willen ontvangen. We definiëren binnen de haakjes de evaluaties om daar te komen.
Sinds ik de GROEP node wil, ga ik al het andere binnen de haakjes proppen.
$xml | Select-XML -XPath '//group'
Nu levert dat de groep node op. Je bent klaar om de node te klonen, attributen bij te werken of een child node in te voegen en dan het bijgewerkte XML object weer in het originele XML bestand op te slaan.