Top-Themen

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, 14392 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
Systemdaten auslesen mit Powershell
Tipp von AnkhMorporkBatch & Shell2 Kommentare

Hallo zusammen, oft werden Fragen zu Problemen gestellt, ohne das betroffene System hinreichend vorzustellen. Keine Lust, keine Ahnung, keine ...

Router & Routing
Powershell: FritzBox über TR-064 im Netzwerk konfigurieren und auslesen
Anleitung von colinardoRouter & Routing14 Kommentare

Ich stand neulich vor der undankbaren Aufgabe eine Fritzbox per Powershell auszulesen und Aktionen darüber automatisiert auszuführen. Herausgekommen ist ...

SAN, NAS, DAS
Speicher - Ich brauche mehr Speicher
Information von Penny.CilinSAN, NAS, DAS33 Kommentare

Grade im Newsticker von Heise gefunden: 14-TByte-Festplatte mit Helium und SMR von HGST So, dann fange ich mal an ...

Exchange Server
Analyse der SMTP Traffic Log Dateien per Powershell
Tipp von KnorkatorExchange Server3 Kommentare

Hallo, habe mir eine kleine Powershell Funktion geschrieben mit der ich die Exchange SMTP Logdateien Filtern kann. Ist nichts ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 4 StundenWindows 10

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 6 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 20 StundenInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 23 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte15 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...