2009-07-22 4 views
0

次のXMLファイルがあり、PowerShell(バージョン1.0)を使用してXMLファイルを操作してFooの値を取得したいとします(このサンプルでは、​​取得する値は "Foo Value)とGoo(このサンプルでは、​​取得したい値は「Goo Value」です)、実装方法は?事前にPowerShell XMLファイル操作の問題

$FooConfig = [xml](get-content .\Foo.exe.config -ErrorAction:stop) 

<configuration> 
<appSettings> 
    <add key="Foo" value="Foo Value" /> 
    <add key="Goo" value="Goo Value" /> 
</appSettings> 
</configuration> 

おかげで、 ジョージ

答えて

4

のXPath APIは、(あなたのXMLは、結局、ただの.NETオブジェクトである)PowerShellの下に非常に生きている、そしてそれは多くの場合、あなたの場合に使用するのが最も簡単することができ

$appSettingsSection = $fooConfig.configuration.appSettings; 
$goo = $appSettingsSection.SelectSingleNode("add[@key='Goo']"); 
$goo.Value 

それとも、

$appSettingsSection = $fooConfig.configuration.appSettings.add 
:-)(もう少しPowerShellのコレクションとして要素を追加PowerShell'ishを列挙したい場合:値だけが欲しいです

key               value 
---               ----- 
Foo               Foo Value 
Goo               Goo Value 

を印刷し、もちろん、あなたが好きな処理を行うために、追加のコマンドにパイプを引き起こすことができます。

+0

クールは、私の質問には答えています! – George2

2

しかし、XML APIでXPATHを使用してannotherアプローチがSELECTNODESを使用することです:

PS> $FooConfig .SelectNodes('//add') 

key               value 
---               ----- 
Foo               Foo Value 
Goo               Goo Value 
+2

慎重にそこに!これは設定ファイルであり、ほとんどの設定ファイルには多くの 'add'ノードがあります。これは、appSettingsの「追加」ノードとconnectionStringsを取得し、神はそれ以外のものを知っているだけです。 –