2017-11-13 9 views
1

XML:のPowerShell:名前のXMLを通じて解析 "ADDRESS"

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

私のようなXMLに移動しよう、それは動作します。また

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

  • これは動作します:$results.ServerList.Name
  • これは動作します:$results.ServerList.Port
  • これは動作します:

$results.ServerList.RPCServerPortはしかし、これは動作しません:$results.ServerList.Address

を私はXMLの内容とは関係ありませんOverloadDefinitions結果を取得しています。

'住所'は何か他のことをやろうとしているようですが、誰かがXMLのADDRESSコンテンツを表示する方法を知っていますか?

+1

'$ results.ServerList.ServerInfo |%Address'または' $ results.ServerList.ServerInfo | Select -Expand Address'は両方とも動作します。 – TheMadTechnician

答えて

1

配列には、配列内の項目を取得するためのCILで定義されたAddressというメソッドがあります。この場合

$results.ServerList.ServerInfo.Address 

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

あなたが住所を呼び出すときには、PowerShellは、各アイテムのアドレスのプロパティを取得する必要がありますが、PowerShellは、これらのアイテムを含む配列の送付方法の定義を返していると仮定します。

プロパティにアクセスするには、プロパティ名がメソッドシグニチャと一致しないように、または配列内の項目をループするようにプロパティ名を変更し、TheMadTechnicianが提案した方法でプロパティを取得する必要があります。

$results.ServerList.ServerInfo | Select-Object -ExpandProperty Address 
$results.ServerList.ServerInfo | Foreach-Object {$_.Address} 
+0

ボキャブラリーを理解していただきありがとうございます – ToastMan

+0

私にはフォローアップの質問がありますが、どのようにしてのサブアイテムを参照するのですか?各ServerInfoには折りたたみ可能な項目があります。ドリルするServerInfoをどのように選択するか – ToastMan

+0

申し訳ありません。上記の私の質問は間違った言い方であり、私はそれを変更することはできません: 私は上記の構文でアイテムのそれぞれにドリルダウンできますか?たとえば、アドレスが "Server02"のから来た場合にのみ、アイテムに穴を開ける必要があります。 – ToastMan

関連する問題