Powershell: Werte aus einer XML-Datei auslesen und wieder darin speichern
Oft steht man in einem Script vor der Aufgabe, Werte einer Variablen dauerhaft im Dateisystem zu hinterlegen um sie dann beim erneuten Ausführen des Scripts abrufen zu können. Diese Anleitung beschreibt eine mögliche Variante bei der die Werte in einer XML-Datei gespeichert werden.
Als Parameter wird Ihr der Pfad zur XML-Datei übergeben.
Als Rückgabewert gibt es eine Hashtable zurück.
Als Parameter erwartet es die Hashtable mit den geänderten Werten und den Pfad zur XML-Datei.
Hoffe das hilft dem ein oder anderen bei seinem Powershell-Projekt
Grüße @colinardo
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Vorlage für die XML-Einstellungsdatei
Für die XML-Datei erstellen wir uns eine Vorlage die folgendermaßen aussehen sollte:<?xml version="1.0" encoding="utf-8"?>
<settings>
<setting name="Einstellung 1">Wert 1</setting>
<setting name="Einstellung 2">Wert 2</setting>
<setting name="Einstellung 3">Wert 3</setting>
</settings>
Funktion zum Einlesen der Einstellungen in eine Hashtable
Die Funktion übernimmt die Aufgabe des Auslesens der einzelnen Einstellungen.Als Parameter wird Ihr der Pfad zur XML-Datei übergeben.
Als Rückgabewert gibt es eine Hashtable zurück.
function readSettings([string]$xmlFile){
$xmlDoc = New-Object XML
$xmlDoc.Load($xmlFile)
$settings = @{}
$xmlDoc.settings.ChildNodes | %{$settings[$_.name] = $_.firstChild.Value}
return $settings
}
Funktion zum Speichern der geänderten Einstellungen
Diese Funktion übernimmt die Aufgabe des Speichern's der geänderten EinstellungenAls Parameter erwartet es die Hashtable mit den geänderten Werten und den Pfad zur XML-Datei.
function writeSettings([hashtable]$ht,[string]$xmlFile){
$xmlDoc = New-Object XML
$xmlDoc.Load($xmlFile)
foreach ($key in $ht.keys){
$settingNode = $xmlDoc.SelectSingleNode("/settings/setting[@name='$key']")
if ($settingNode){
$settingNode.firstChild.Value = $ht[$key]
}else{
$newNode = $xmlDoc.settings.setting.Clone()
$newNode.name = $key
$newNode.firstChild.Value = $ht[$key]
$xmlDoc.settings.appendChild($newNode)
}
}
$xmlDoc.Save($xmlFile)
}
Beispiele zur Nutzung der Funktionen
Wert einer Einstellung auslesen
$mySettings = readSettings "C:\settings.xml"
$wert1 = $mySettings["Einstellung 1"]
Einstellung in der Hashtable verändern
$mySettings["Einstellung 1"] = "Anderer Wert"
Geänderte Einstellungen in der XML-Datei abspeichern
writeSettings $mySettings "C:\settings.xml"
Hoffe das hilft dem ein oder anderen bei seinem Powershell-Projekt
Grüße @colinardo
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 208115
Url: https://administrator.de/contentid/208115
Ausgedruckt am: 23.11.2024 um 08:11 Uhr