Gewisse Einstellungen möchte man nicht immer beim Start eines Skripte eingeben müssen, aber auch nicht direkt in dem Powershell Skript speichern. Ich habe bis dato hierfür INI-Files verwendet, um zentral Settings auszulesen oder die Einstellungen in der Registry gespeichert. Für mein aktuelles Projekt möchte ich es auf XML umstellen.
Aufbau der XML Datei
Der Aufruf einer XML-Einstellung erfolgt über den Path => $file.Settings.EmailSettings.SMTPServer (dieser Pfad ist nicht case sensitive)
Auslesen der XML Datei
Das Auslesen einer solchen XML-Datei ist ganz einfach:
[xml]$ConfigFile = Get-Content "$MySettings.xml" $SMTPServer = $ConfigFile.Settings.EmailSettings.SMTPServer
Bekommt man die Fehlermeldung “”‘XML’ is an invalid name for processing instructions” ist die erstellte XML-Datei fehlerhaft.
An dieser Stelle möchte ich noch hinweisen, wie man Arrays in XML ablegt.
<settings> <services> <sv>service1</sv> <sv>service2</sv> </services> </settings>
Einzelne Elemente kann man mittels $Configfile.settings.services.sv[0] … [n] ansprechen, wenn man aber nicht die Anzahl der Elemente kennt und diese in einem Array benötigt, kann man das mit einer foreach Schleife machen.
foreach ($service in $ConfiFile.settings.services.sv) { Write-host $service }