2017-11-13 1 views
1

XML:Powershell: Parsen Durch XML mit dem Namen "ADDRESS"

<ServerList> 
<ServerInfo ServerType="text" RPCServerPort="111" Port="110" Address="Server01" Name="Name1"> 
<ServerInfo ServerType="text" RPCServerPort="111" Port="110" Address="Server02" Name="Name2"> 

Wenn ich versuche, in XML als solche zu navigieren, es funktioniert:

[xml]$results = Get-Content C:\Users\myself\Desktop\file.xml 
$results.ServerList.ServerInfo 

auch:

  • Dies funktioniert: $results.ServerList.Name
  • Dies funktioniert: $results.ServerList.Port
  • Dies funktioniert: $results.ServerList.RPCServerPort

Dies ist jedoch nicht funktioniert: $results.ServerList.Address

Ich erhalte ein OverloadDefinitions Ergebnis, das nichts mit dem Inhalt des XML zu tun hat.

"Adresse" scheint zu versuchen, etwas anderes zu tun, weiß jemand, wie man den ADRESSE Inhalt im XML auflistet?

+1

'$ results.ServerList.ServerInfo |% Address' oder' $ results.ServerList.ServerInfo | Select -Expand Address' funktionieren beide. – TheMadTechnician

Antwort

1

Arrays verfügen über eine Methode namens Adresse, die im CIL zum Abrufen von Elementen im Array definiert ist.

$results.ServerList.ServerInfo.Address 

OverloadDefinitions 
------------------- 
System.Object&, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Address(int) 

In diesem Fall, wenn Sie Adressaufruf annehmen, dass Sie Powershell jedes Einzelteile Eigenschaft Adresse abgerufen werden sollen, aber Powershell die Definition für die Adresse Methode des Arrays zurückgibt, die diese Elemente enthält.

Wenn Sie auf die Eigenschaften zugreifen möchten, müssen Sie die Eigenschaftsnamen so ändern, dass sie nicht mehr mit einer Methodensignatur übereinstimmen oder die Elemente im Array durchlaufen und die Eigenschaften wie TheMadTechnician abrufen.

+0

Vielen Dank, dass Sie mir geholfen haben, das Vokabular zu verstehen – ToastMan

+0

Ich habe eine Follow-up-Frage, wie würde ich in jedes der Unterelemente blättern? Jede der ServerInfo hat mehr zusammenklappbare Elemente unter ihnen. Wie wähle ich, in welche ServerInfo ich bohren möchte. – ToastMan

+0

Entschuldigung. Meine Frage oben ist schlecht formuliert und ich kann es nicht ändern: Ich habe eine Follow-up-Frage, kann ich in jedem der Artikel mit der Syntax, die wir oben verwendet? zum Beispiel möchte ich weiter bohren in den Artikel, nur wenn dieser von der kommt, die Address = "Server02" hat – ToastMan