function Merge-ConfigurationDataTemplateFile { [CmdletBinding()] Param( [Parameter(Mandatory=$true)] [string[]] $Path, [Parameter(Mandatory=$false)] [switch] $PassThru ) $MergeFiles = @() $AddedFiles = @{} foreach($Item in $Path){ foreach($File in @(Get-ConfigurationDataTemplateMergeFile -Path $Item)){ if(-not $AddedFiles.ContainsKey($File)){ $MergeFiles += $File $AddedFiles[$File] = $true } } } $MergedConfigurationData = $null foreach($File in $MergeFiles){ $TemplateData = Import-PowerShellDataFile -Path $File if($null -eq $MergedConfigurationData){ $MergedConfigurationData = Copy-ConfigurationDataValue -Value $TemplateData if($MergedConfigurationData -is [System.Collections.IDictionary] -and (Test-ConfigurationDataDictionaryKey -Dictionary $MergedConfigurationData -Key "Metadata")){ $MergedConfigurationData.Remove("Metadata") } }else{ $MergedConfigurationData = Merge-DSCConfigurationData -Template $MergedConfigurationData -Deployment $TemplateData if($MergedConfigurationData -is [System.Collections.IDictionary] -and (Test-ConfigurationDataDictionaryKey -Dictionary $MergedConfigurationData -Key "Metadata")){ $MergedConfigurationData.Remove("Metadata") } } } if($PassThru){ return [PSCustomObject]@{ Files = $MergeFiles ConfigurationData = $MergedConfigurationData } } return $MergedConfigurationData }