50 lines
1.6 KiB
PowerShell
50 lines
1.6 KiB
PowerShell
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
|
|
}
|