Use a XML-file for configuration in PowerShell scripts
Time for some PowerShell!
Almost every PowerShell script need some configuration parameters. With this post I want to show one way, there are others ;-), to parse a config file in XML format and use the values later.
The solution I’m going to show to you contains three files. A PowerShell script, a XML configuration file and a helper PowerShell file that contains a function to parse the config file.
The config file contains
<config> <hyperv dir="C:\Hyper-V\New_Server"> <ram>2048</ram> </hyperv> </config>
The helper function to parse the configuration file looks like this
# Parse Configuration file function ParseConfig([string]$filename) { try { $file = Get-Item -Path $filename if ($file.Exists) { $root = "config" $cfg = [xml] ( Get-Content -Path $filename ) return $cfg.config } else { Write-Host "The configuration file "$filename" does not exist" -ForegroundColor Red } } catch { Write-Host "Cannot load configuration file "$filename -ForegroundColor Red } return $null }
And finally the main script, that will reference the helper function, call it and use the values.
# modify here $cfgFile = "NewHyperVConfig.xml" # stop modifying content below # ---------------------------- # load functions from other files . "$PSScriptRoot\helper\Configuration.ps1" # load and parse config from xml file $cfg = ParseConfig $PSScriptRoot"\"$cfgFile # start doing something Write-Host $cfg.hyperv.dir Write-Host $cfg.hyperv.ram
Summary: Store configuration settings in a XML file and use the values in PowerShell script.