baseModules/PPoShTools/1.0.9/Public/Utils/Get-ConfigurationData.ps1
function Get-ConfigurationData { <# .SYNOPSIS Get-ConfigurationData will retrieve configuratin depending on the input .DESCRIPTION Currently JSON (.json) and PowerShell Data (.psd1) are supported. For JSON files possible output is hashtable (default) and PSObject. For PSD1 files only PSObject is currently supported. Using helpers function will return an object data from given configuration file .PARAMETER ConfigurationPath Path to JSON or psd1 file .EXAMPLE Get-ConfigurationData -ConfigurationPath C:\SomePath\Config.json -OutputType HashTable Will read content of Config.json file and convert it to a HashTable. .EXAMPLE Get-ConfigurationData -ConfigurationPath C:\SomePath\Config.json -OutputType PSObject Will read content of Config.json file and convert it to a PS Object. .EXAMPLE Get-ConfigurationData -ConfigurationPath C:\SomePath\Config.psd1 Will read content of Config.psd1 file and return it as a HashTable. .INPUTS Accepts string as paths to JSON or PSD1 files .OUTPUTS Outputs a hashtable of key/value pair or PSObject. #> [CmdletBinding()] [OutputType([Hashtable])] param ( [Parameter(Mandatory = $true, HelpMessage = 'Provide path for configuration file to read', Position = 0 )] [ValidateScript({Test-Path -Path $_ -PathType Leaf })] [string[]] $ConfigurationPath, [Parameter(Mandatory = $false, HelpMessage = 'Select output type',Position = 0)] [ValidateSet('PSObject','HashTable')] [string] $OutputType='HashTable' ) process { foreach ($configPath in $ConfigurationPath) { if($configPath -match '.json') { if($PSBoundParameters.ContainsValue('HashTable')){ (ConvertTo-HashtableFromJSON -Path $configPath) } elseif($PSBoundParameters.ContainsValue('PSObject')){ (ConvertTo-PSObjectFromJSON -Path $configPath) } } if($configPath -match '.psd1') { Import-LocalizedData -BaseDirectory (Split-Path $ConfigurationPath -Parent) -FileName (Split-Path $ConfigurationPath -Leaf) } } } } |