Files
Merge-DSCConfigurationData/Private/Merge-ConfigurationDataTemplateFile.ps1

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
}