Private/Get-ParameterTypeFromStringValue.ps1
function Get-ParameterTypeFromStringValue { <# .SYNOPSIS Determine a parameter type from a sample value .PARAMETER Value Value to test .OUTPUTS AWS parameter type, or string if a type was not matched. #> param ( [string]$Value ) Initialize-RegionInfo foreach ($type in $Script:TemplateParameterValidators.Keys) { if ($Value -match $Script:TemplateParameterValidators[$type]) { if ($type -ne 'AWS::EC2::AvailabilityZone::Name') { # All other types are exact match return $type } # Check it is a known AZ foreach($region in $Script:RegionInfo.Keys) { if ($Value -like "$($region)*") { if ($null -eq $Script:RegionInfo[$region]) { # Load AZs for region $Script:RegionInfo[$region] = (Get-EC2AvailabilityZone -Region $region).ZoneName } if ($Script:RegionInfo[$region] -contains $Value) { # Value is a known AZ return $type } } } } } # No match - assume string return 'String' } |