Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 14156 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
XML
gelöst Vbs - simple XML Datei auslesen (4)

Frage von DeeJayBee zum Thema XML ...

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

Frage von LianenSchwinger zum Thema XML ...

Batch & Shell
CSV zu XML Probleme mit PowerShell (7)

Frage von comtel zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(1)

Information von DerWoWusste zum Thema Microsoft ...

Humor (lol)

Wohnt jemand in Belgien und kann nicht mehr ruhig ausschlafen?

(6)

Information von LordGurke zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (16)

Frage von liquidbase zum Thema Voice over IP ...

TK-Netze & Geräte
TK-Anlage VoIP - DECT Erweiterung (15)

Frage von Lynkon zum Thema TK-Netze & Geräte ...