2009-08-25 8 views
2

web.configのappSettings要素のconfigSourceを更新することで、さまざまな環境でweb.configを更新する方法を見つけようとしています。パラメータを渡してPowershellを使用してweb.configのXML要素のconfigSourceを更新します。

ここで私はそれを行う方法を知っている方法です。

$xml.get_DocumentElement().appSettings.configSource = $replaced_test 

の問題は、私は私が変更と更新したいが、私はそれを行う方法を確認していないスクリプトに異なるノードに渡すことができます一つの基地スクリプトをしたいということです。例えば

、私は、これは十分に明確だった願っています。この

changeWebConfig.ps1 nodeToChange newValueofNode 

のようにPowerShellスクリプトを呼び出すことができるようにしたいです。

これは私が今使っているコードです。

​​

私が持っていた問題は、構成ノード

だった私は、私はどのように確認していない

<configuration> 

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 

このことから、それを変更しなければなりませんでしたコンフィグレーションを持つノードを見つけるイオンノードは元の状態ですが、近づいています。

function Set-ConfigAppSetting 
([string]$PathToConfig=$(throw 'Configuration file is required'), 
     [string]$Key = $(throw 'No Key Specified'), 
     [string]$Value = $(throw 'No Value Specified')) 
{ 
    if (Test-Path $PathToConfig) 
    { 
     $x = [xml] (type $PathToConfig) 
     $node = $x.SelectSingleNode("//client[@configSource]") 
     $node.configSource = $Value 
     $x.Save($PathToConfig) 
    } 
} 

set-configappsetting "c:\web.config" CurrentTaxYear ".\private$\dinnernoworders" -confirm 

答えて

3

最後にわかりました。当然の

$root = $xml.get_DocumentElement().SelectSingleNode("//client[@configSource]").configSource = "test" 

、私は置き換えられます「//クライアントが[@configSource]」変数をので、私は私のベースのスクリプトを作成するためのパラメータとして、異なるノードに渡すことができます。

+0

FYIあなたがget_DocumentElement()を使用する必要はありません。ここで

ノードはいただきました!あなたが見ることができます方法です。 $ xml.SelectSingleNode( "...")は、SelectSingleNodeが$ xmlがこの場合にあるXmlDocumentでも利用可能であるため動作します。 –

2

私はコードを修正する方法も探しています。

$path = 'c:\site\web.config' 
$PublishState = (Select-Xml -Path $path -XPath "configuration/appSettings/add[@key='PublishState']/@value").Node.'#text' 
$PublishState 
関連する問題