Functions/Get-CMCFNParameters.ps1
#Requires -Module FXPSYaml function Get-CMCFNParameters { [OutputType([String])] [CmdletBinding()] Param ( [Parameter(Mandatory=$true)] [String] $Template, [ValidateSet("YAML", "JSON")] [String] $Format = "YAML" ) if ($Format -eq "YAML"){ if (-not (Get-Command ConvertFrom-Yaml)){ Write-error "ConvertFrom-Yaml not found, please make sure the FXPSYaml module is installed" } } $Text = @('$Parameters = @(') Try { $Parameters = [PSCustomObject]($Template | ConvertFrom-Yaml).Parameters } Catch { $Parameters = [PSCustomObject]($Template | ConvertFrom-Json).Parameters } If ($Parameters){ foreach ($Param in ($Parameters | Get-Member | Where-Object MemberType -eq "NoteProperty").Name) { $Text+=' @{ParameterKey="'+$Param+'"; ParameterValue='+$( if ($Parameters.$Param.Default) {'"'+$Parameters.$Param.Default+'"'} elseif ($Parameters.$Param.Type -eq "AWS::EC2::SecurityGroup::Id"){if ($SGId) {'$SGId'} else {'""'}} elseif ($Parameters.$Param.Type -eq "List<AWS::EC2::Subnet::Id>") {if ($SubnetIds){'$SubnetIds'} else {'""'}} elseif ($Parameters.$Param.Type -eq "AWS::EC2::Subnet::Id") {if ($SubnetId) {'$SubnetId'} else {'""'}} elseif ($Parameters.$Param.Type -eq "AWS::EC2::VPC::Id") {if ($VpcId) {'$VpcId'} else {'""'}} elseif ($Parameters.$Param.Type -eq "AWS::EC2::Image::Id") {if ($AMI) {'$AMI'} else {'""'}} elseif ($Parameters.$Param.Type -eq "AWS::EC2::KeyPair::KeyName") {if ($KeyPair) {'$KeyPair'} else {'""'}} else {'""'} )+'}' } } $Text+=')' $Text | Out-String } |