2016-12-29 2 views
0

Die Aufgabe besteht darin, die App-Einstellungen in web.config und app.config mithilfe des Power-Shell-Skripts zu aktualisieren. Nach einigem Suchen habe ich ein Skript gefunden, um einzelne Dateien, aber nicht mehrere Dateien zu aktualisieren. Kann jemand helfen?Aktualisieren mehrerer Konfigurationsdateien mit PowerShell-Skripten

$Config = C:\inetpub\wwwroot\TestService\Web.config 
$doc = (Get-Content $Config) -as [Xml] 
$obj = $doc.configuration.appSettings.add | where {$_.Key -eq 'SCVMMServerName'} 
$obj.value = CPVMM02 
$doc.Save($Config) 
+1

Sie wollen also Get-ChildItem und eine for-Schleife? – Matt

+0

Ich bin mir nicht sicher. aber das könnte helfen. Können Sie teilen, wie es geht? – Sridhar

+0

$ filenames = Get-ChildItem -Path "C: \ Testservice" -Recurse -Include * .config foreach ($ file in $ filenames) {\t \t $ doc = (Get-Content $ file) -wie [Xml ] If ($ doc -match 'key1') { $ obj1 = $ doc.configuration.appSettings.add | where {$ _. Key -eq 'key1'} \t $ obj1.value = 'true' $ doc.Save ($ file) \t } } dies nicht – Sridhar

Antwort

0

Ich kann Ihnen eine logische Abschaltung geben. Sie können die Zeile, die Sie aktualisieren möchten mit der -match in select-string dann ähnlich können Sie die übrigen Dinge, die bereits in der Datei mit -notmatch ist. Setzen Sie sie in Variablen. Aktualisieren Sie die Zeile und speichern Sie sie in der Variablen.

Dann setzen beide (die modifizierte Zeilenvariablen und die restlichen Werte, die Sie nicht geändert haben) zurück in die Datei mit Set-Inhalt

Hoffnung hast du ein aufrechnen, wie

+0

$ funktionierten filenames = Get-ChildItem -Path "C: \ Testservice" -Recurse -Include * .config foreach ($ file in $ filenames) {\t \t $ doc = (Get-Content $ file) -wie [XML] If ($ doc -match ' key1 ') { $ obj1 = $ doc.configuration.appSettings.add | where {$ _. Key -eq 'key1'} \t obj1.value $ = 'true' $ doc.Save ($ file) \t } } dies nicht funktioniert – Sridhar

+0

mich durch sie gehen lassen –

+0

Das gleiche Lösung hat für mich funktioniert. Ich habe contains verwendet und mein Schlüssel ist dort "SCVMMServerName", so dass es funktioniert hat. '$ fileNames = Get-ChildItem -Pfad" C: \ TestService "-Recurse -Include '* .config' foreach ($ Datei in $ fileNames) {$ doc = (Get-Content $ Datei) -als [Xml] If ($ doc -contains 'SCVMMServerName') {$ obj1 = $ doc.configuration.appSettings.add | Wobei {$ _. Key -enthält 'key1'} \t $ obj1.value = 'true' $ doc.Save ($ datei)}} '. Sodawillows Lösung ist auch gültig –

0

zu nähern Es gibt viele Möglichkeiten, dies zu tun, zum Beispiel:

+0

Wie kann ich dieses Skript in der Kudu-Debug-Konsole ausführen, um web.config zu aktualisieren? – Sridhar

Verwandte Themen