Accessing attributes in a XML file returns a column name “#text”

Tijdens het werken aan een script met XML file kwam ik het volgende probleem tegen

Ik las een XML file in met ongeveer volgende structuur:

<?xml version="1.0" ?>
<InstallScripts>
<Actions>
  <Actie>
   <Kind>TestPrereq</Kind>
   <Level>Solution</Level>
   <Name>Solution-Power-Gadget.wsp</Name>
   <Parameters>
     <Parameter Name="URL">http://val-cl</Parameter>
     <Parameter Name="Deploy">GAC</Parameter>
    </Parameters>
   </Actie>
</Actions>
</InstallScripts>

Het inlezen gebeurde door volgende 2 lijnen :

[XML]$theXMLFile=(gc c:\temp\test.xml)
$theXMLFile.InstallScripts.Actions.Actie.Parameters.Parameter

 Dit gaf het volgende resultaat

 

Verder in het script wou ik verder werken met de waarden in de kolom "#text". Het viel me onmiddelllijk dat de kolom naam begon met het PowerShell remark teken (#)

De volgende pogingen gaven allemaal een foutmelding

$theXMLFile.InstallScripts.Actions.Actie.Parameters.Parameter  | %{$_.name $_.#text}

$theXMLFile.InstallScripts.Actions.Actie.Parameters.Parameter  | %{“$_.name $_.#text”}

$theXMLFile.InstallScripts.Actions.Actie.Parameters.Parameter  | %{`$_.#text}

Dit gaf allemaal foutmeldingen...

Using #text XML With PowerShell

 

Uiteindelijk probeerde ik het volgende

[XML]$theXMLFile=(gc c:\temp\test.xml)
$theXMLFile.InstallScripts.Actions.Actie.Parameters.Parameter
$TextColumn="#text"
$theXMLFile.InstallScripts.Actions.Actie.Parameters.Parameter | %{$_.$TextColumn}

 

Dit werkte, maar het blijft een workaround!