Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Powershell: Werte aus einer XML-Datei auslesen und wieder darin speichern

Anleitung Entwicklung Batch & Shell

Mitglied: colinardo

colinardo (Level 5) - Jetzt verbinden

17.06.2013, aktualisiert 07.05.2014, 12383 Aufrufe, 2 Danke

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.

Vorlage für die XML-Einstellungsdatei

Für die XML-Datei erstellen wir uns eine Vorlage die folgendermaßen aussehen sollte:
01.
<?xml version="1.0" encoding="utf-8"?> 
02.
<settings> 
03.
  <setting name="Einstellung 1">Wert 1</setting> 
04.
  <setting name="Einstellung 2">Wert 2</setting> 
05.
  <setting name="Einstellung 3">Wert 3</setting> 
06.
</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.
01.
function readSettings([string]$xmlFile){ 
02.
    $xmlDoc = New-Object XML 
03.
    $xmlDoc.Load($xmlFile) 
04.
    $settings = @{} 
05.
    $xmlDoc.settings.ChildNodes | %{$settings[$_.name] = $_.firstChild.Value} 
06.
    return $settings 
07.
}

Funktion zum Speichern der geänderten Einstellungen

Diese Funktion übernimmt die Aufgabe des Speichern's der geänderten Einstellungen
Als Parameter erwartet es die Hashtable mit den geänderten Werten und den Pfad zur XML-Datei.
01.
function writeSettings([hashtable]$ht,[string]$xmlFile){ 
02.
    $xmlDoc = New-Object XML 
03.
    $xmlDoc.Load($xmlFile) 
04.
    foreach ($key in $ht.keys){ 
05.
        $settingNode = $xmlDoc.SelectSingleNode("/settings/setting[@name='$key']") 
06.
        if ($settingNode){ 
07.
            $settingNode.firstChild.Value = $ht[$key] 
08.
        }else{ 
09.
            $newNode = $xmlDoc.settings.setting[0].Clone() 
10.
            $newNode.name = $key 
11.
            $newNode.firstChild.Value = $ht[$key] 
12.
            $xmlDoc.settings.appendChild($newNode) 
13.
14.
15.
    $xmlDoc.Save($xmlFile) 
16.
}

Beispiele zur Nutzung der Funktionen

Wert einer Einstellung auslesen
01.
$mySettings = readSettings "C:\settings.xml" 
02.
$wert1 = $mySettings["Einstellung 1"]
Einstellung in der Hashtable verändern
01.
$mySettings["Einstellung 1"] = "Anderer Wert"
Geänderte Einstellungen in der XML-Datei abspeichern
01.
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
Neuester Wissensbeitrag
Ähnliche Inhalte
PHP
gelöst Externe XML-Datei in PHP auslesen (18)

Frage von Akrosh zum Thema PHP ...

VB for Applications
gelöst Xml-Datei laden bzw. auf Festplatte kopieren und per VBA in eine Access-Tabelle speichern (22)

Frage von machohunk zum Thema VB for Applications ...

Batch & Shell
gelöst PowerShell, Log Datei auslesen, bei Änderungen E-Mail senden (12)

Frage von swissbull zum Thema Batch & Shell ...

Installation
gelöst Mit Powershell in einer Datei eine Zeile auslesen (6)

Frage von Bommi1961 zum Thema Installation ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...