Vai niin, taas yksi nopea oppitunti XML:n etsimisestä.
Tällainen XML-solmu:
<server name="DomainController1"></server>
Käyttää nimeä attribuuttina. Kirjoitin juuri postauksen siitä, miten etsiä XML:ää solmun attribuutin perusteella.
Mutta siitä ei ole mitään hyötyä solmun varsinaista tekstiarvoa vastaan.
<server>DomainController1</server>
Täysin erilainen peto. Temppu tässä on käyttää metodia ”text()”.
$XML | Select-Xml -Xpath '//server'
Oh joo… Siinäpä se hyvä juttu.
Voit etsiä myös muutaman tason alempaa. Tässä on esimerkki Remote Desktop Connection Manager -tiedostosta.
<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>
Jos haluan saada GROUP-solmun, jossa on PALVELIN nimeltä DomainController1.myDomain.demo… Voin tehdä sen XPath:lla ja Select-XML:llä.
#This isn't exactly it, but it's a learning step to help you better understand.$xml | Select-XML -XPath '//group/server/properties/name'
Näin haetaan ryhmään kuuluvan palvelimen nimi-solmua. Näetkö kuinka lähellä tuo on? Etkö jo opi?
Englanniksi tuo XPath-lause kääntyy seuraavasti: ”Anna minulle NAME-solmu, jonka tekstiarvo on DomainController1.MyDomain.demo, joka on ominaisuuksiksi kutsutun solmun childnode, joka on palvelimeksi kutsutun solmun childnode, joka on ryhmä-nimisen solmun childnode. AND, that group node could be anywhere in the XML.”
Määrittelemme sulkujen ulkopuolella solmun, jonka haluamme vastaanottaa. Määrittelemme sulkujen sisällä arvioinnit, joilla sinne päästään.
Koska haluan GROUP-solmun, aion tunkea kaiken muun sulkujen sisään.
$xml | Select-XML -XPath '//group'
Nyt tämä palauttaa group-solmun. Olet valmis kloonaamaan solmun, päivittämään attribuutteja tai lisäämään lapsisolmun ja sitten tallentamaan päivitetyn XML-objektin takaisin alkuperäiseen XML-tiedostoon.