Add functions for configuration data handling and extend template merging capabilities

This commit is contained in:
Torsten Brendgen
2026-07-03 10:34:27 +02:00
parent 735bfc9f61
commit fcbe61902f
8 changed files with 408 additions and 76 deletions

View File

@@ -0,0 +1,49 @@
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
}