Private/Config-Helpers/Convert-ParametersToInputConfig.ps1
function Convert-ParametersToInputConfig { param( [Parameter(Mandatory = $false)] [PSCustomObject] $inputConfig, [Parameter(Mandatory = $false)] [hashtable] $parameters ) foreach($parameterKey in $parameters.Keys) { $parameter = $parameters[$parameterKey] Write-Verbose "Processing parameter $parameterKey $(ConvertTo-Json $parameter -Depth 100)" foreach($parameterAlias in $parameter.aliases) { if($inputConfig.PsObject.Properties.Name -contains $parameterAlias) { Write-Verbose "Alias $parameterAlias exists in input config, renaming..." $configItem = $inputConfig.PSObject.Properties | Where-Object { $_.Name -eq $parameterAlias } $inputConfig | Add-Member -NotePropertyName $parameterKey -NotePropertyValue @{ Value = $configItem.Value.Value Source = $configItem.Value.Source } $inputConfig.PSObject.Properties.Remove($configItem.Name) continue } } if($inputConfig.PsObject.Properties.Name -notcontains $parameterKey) { $variableValue = [Environment]::GetEnvironmentVariable("ALZ_$($parameterKey)") if($null -eq $variableValue) { if($parameter.type -eq "SwitchParameter") { $variableValue = $parameter.value.IsPresent } else { $variableValue = $parameter.value } } if($parameter.type -eq "SwitchParameter") { $variableValue = [bool]::Parse($variableValue) } Write-Verbose "Adding parameter $parameterKey with value $variableValue" $inputConfig | Add-Member -NotePropertyName $parameterKey -NotePropertyValue @{ Value = $variableValue Source = "parameter" } } } return $inputConfig } |