61 lines
2.7 KiB
PowerShell
61 lines
2.7 KiB
PowerShell
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()
|
|
$Context = New-ConfigurationDataResolutionContext -ConfigurationData $ResolvedConfigurationData
|
|
|
|
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])){
|
|
$SecretReference = $Definition[$ValueKey]
|
|
if($UseDummySecrets){
|
|
$Definition[$ValueKey] = New-ConfigurationDataDummySecretValue -ExpectedType $ExpectedType -Reference $SecretReference -ParameterName $Parameter.Name
|
|
}else{
|
|
$Definition[$ValueKey] = Resolve-ConfigurationDataSecretReference -Reference $SecretReference -ExpectedType $ExpectedType -ProviderSettings $ProviderSettings -Context $Context
|
|
}
|
|
|
|
if($ExpectedType -eq "credential" -and
|
|
$UseDummySecrets -and
|
|
(Test-ConfigurationDataMapContainsKey -Map $SecretReference -Key "Domain")){
|
|
$Domain = Get-ConfigurationDataMapValue -Map $SecretReference -Key "Domain"
|
|
$Domain = Resolve-ConfigurationDataValue -Value $Domain -Context $Context
|
|
$Definition[$ValueKey] = ConvertTo-ConfigurationDataDomainCredential -Credential $Definition[$ValueKey] -Domain ([string]$Domain)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return $ResolvedConfigurationData
|
|
}
|