function Resolve-ConfigurationDataParameterSecrets { [CmdletBinding()] Param( [Parameter(Mandatory=$true)] [System.Collections.Hashtable] $ConfigurationData, [Parameter(Mandatory=$false)] [hashtable] $ProviderSettings = @{}, [Parameter(Mandatory=$false)] [switch] $UseDummySecrets ) $ResolvedConfigurationData = $ConfigurationData.Clone() if($ResolvedConfigurationData.ContainsKey("Parameters")){ $ResolvedConfigurationData.Parameters = $ResolvedConfigurationData.Parameters.Clone() foreach($Parameter in @($ResolvedConfigurationData.Parameters.GetEnumerator())){ $Definition = $Parameter.Value if(-not (Test-ConfigurationDataMap -Value $Definition)){ continue } $Definition = $Definition.Clone() $ResolvedConfigurationData.Parameters[$Parameter.Name] = $Definition $TypeName = [string](Get-ConfigurationDataMapValue -Map $Definition -Key "Type" -DefaultValue "") if($TypeName -notin @("credential", "secureString", "string")){ continue } $ExpectedType = $TypeName.ToLowerInvariant() foreach($ValueKey in @("Value", "DefaultValue")){ if((Test-ConfigurationDataMapContainsKey -Map $Definition -Key $ValueKey) -and (Test-ConfigurationDataSecretReference -Value $Definition[$ValueKey])){ if($UseDummySecrets){ $Definition[$ValueKey] = New-ConfigurationDataDummySecretValue -ExpectedType $ExpectedType -Reference $Definition[$ValueKey] -ParameterName $Parameter.Name }else{ $Definition[$ValueKey] = Resolve-ConfigurationDataSecretReference -Reference $Definition[$ValueKey] -ExpectedType $ExpectedType -ProviderSettings $ProviderSettings } } } } } return $ResolvedConfigurationData }