2012-10-22 13 views
5

uwzględniając następujące app.config:Wymień app.config wartości węzła poz PowerShell

<configuration> 
<appSettings> 
<add key="filepath" value="D:\Data" /> 
<add key="node2" value="..." /> 
... 
</appSettings> 
</configuration> 

chcę zastąpić ustawienie, które ma klucz „filePath” z nowej wartości (zastępując „D: \ Data ..' w tym przypadku). Nowa wartość powinna zostać przekazana jako parametr do skryptu powershell. Dzięki

Odpowiedz

6

Aktualizacja oparta na komentarz:

$xml = [xml]'<configuration> 
<appSettings> 
<add key="filepath" value="D:\Data" /> 
<add key="filename" value="test.log" /> 
</appSettings> 
</configuration>' 

$xml.configuration.appSettings.add | foreach { if ($_.key -eq 'filepath') { $_.value = "C:\Data" } } 
$xml.Save("C:\dell\NewApp.config") 

================================ ================================================== =========

OLD ODPOWIEDŹ

$xml = [xml]'<configuration> 
<appSettings> 
<add key="filepath" value="D:\Data" /> 
</appSettings> 
</configuration>' 

$xml.configuration.appSettings.add.value = "C:\Data" 
$xml.Save("NewApp.config") 

lub

$xml = [xml](Get-Content App.config) 
$xml.configuration.appSettings.add.value = "C:\Data" 
$xml.Save("NewApp.Config") 
+0

Otrzymuję następujący błąd: nie można znaleźć właściwości "value" na tym obiekcie; upewnij się, że istnieje i można go ustawiać. Wygląda na to, że muszę jakoś powiedzieć, aby znaleźć węzeł "filepath" aplikacji? –

+0

Cóż, wtedy widzisz więcej niż jeden węzeł w konfiguracji. Poprawny? Jeśli tak, zaktualizuj swoje pytanie próbką, która ma więcej węzłów. – ravikanth

+0

Zaktualizowana odpowiedź naprawdę zaoszczędziła mi wielu godzin i możliwości odtworzenia całego projektu. Ale jeden błąd (choć nie przerywa mi teraz w tej chwili), który dostaję w tej chwili to "Nie mogę przekonwertować wartości na typ" System.Xml.XmlDocument "" Docenić @ravikanth, jeśli możesz mi w tym pomóc. –