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, 13873 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
Ähnliche Inhalte
Batch & Shell
XML nach Liste mit Werten durchsuchen (12)

Frage von bocker zum Thema Batch & Shell ...

XML
gelöst XML Datei mit Powershell splitten (2)

Frage von LianenSchwinger zum Thema XML ...

Batch & Shell
gelöst Verständnisprobleme XML mit Powershell (14)

Frage von Kraemer zum Thema Batch & Shell ...

PHP
gelöst Externe XML-Datei in PHP auslesen (18)

Frage von Akrosh zum Thema PHP ...

Neue Wissensbeiträge
Linux Netzwerk

Ping und das einstellbare Bytepattern

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(3)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
SAN, NAS, DAS
MSA 2050 RAID Konfig (24)

Frage von Leo-le zum Thema SAN, NAS, DAS ...

Netzwerkmanagement
Windows Server 2008 R2: "netsh reset" nicht verfügbar? (10)

Frage von RickTucker zum Thema Netzwerkmanagement ...

Netzwerkmanagement
Suche eine Software für Cloudverwaltung (6)

Frage von tsunami zum Thema Netzwerkmanagement ...

Google Android
Musik Wiedergabe am PC mit Smartphone über Bluetooth steuern (5)

Frage von justlukas zum Thema Google Android ...