Functions/Get-POSHOriginConfig.ps1
function Get-POSHOriginConfig { <# .SYNOPSIS Reads and processes a POSHOrigin configuration file. .DESCRIPTION Reads and processes a POSHOrigin configuration file and returns the result as one or more PowerShell custom objects containing the required options that when passed to a POSHOrigin DSC resource can provision the infrastructure the DSC resource represents. .PARAMETER Path The relative or absolute path(s) of the configuration files or folders to be processed .PARAMETER Recurse Recursively process subfolders and files .EXAMPLE Read the configuration contained in vm_config.ps1 into a variable. $config = Get-POSHOriginConfig -Path '.\vm_config.ps1' -Verbose .EXAMPLE Read all the configurations in folder MyConfigs into a variable. $configs = '.\MyConfigs' | Get-POSHOriginConfig -Verbose .EXAMPLE Read the configurations my_vm.ps1 and my_vips into a variable. $configs = '.\my_vm.ps1', 'my_vips.ps1' | Get-POSHOriginConfig -Verbose .EXAMPLE Recursively read the configurations contained in the folder my_configs. $configs = '.\MyConfigs' | Get-POSHOriginConfig -Recurse -Verbose #> [cmdletbinding(HelpUri='https://github.com/devblackops/POSHOrigin/wiki/Get-POSHOriginConfig')] param( [parameter( ValueFromPipeline, ValueFromPipelineByPropertyName )] [Alias('FullName')] [ValidateScript({Test-Path $_})] [string[]]$Path = (Get-Location).Path, [switch]$Recurse ) begin { $script:credentialCache = @{} $script:modulesToProcess = @{} $script:resourceCache = @{} } process { foreach ($item in $Path) { # Load in the configurations $item = Resolve-Path $item if (Test-Path -Path $item) { $configData = @(@(_LoadConfig -Path $item -Recurse:$Recurse) | _SortByDependency) Write-Verbose -Message ([string]::Empty) Write-Verbose -Message ("Created $($configData.Count) resource objects") return $configData } else { Write-Error -Message ($msgs.invalid_path -f $path) } } } end { # Remove any downloaded git-based modules _CleanupDownloadedModules.ps1 $script:credentialCache = @{} $script:modulesToProcess = @{} $script:resourceCache = @{} } } |