Private/GenerateParameterFile.ps1
function GenerateParameterFile { [CmdletBinding()] param ( [object]$File ) $fileName = $file.Name -replace ".bicep", "" $armTemplate = Get-Content "$($file.DirectoryName)\$filename.json" -Raw | ConvertFrom-Json $parameterBase = [ordered]@{ '$schema' = 'https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#' 'contentVersion' = '1.0.0.0' } $parameterNames = $armTemplate.Parameters.psobject.Properties.Name $parameters = [ordered]@{} foreach ($parameterName in $parameterNames) { $ParameterObject = $ArmTemplate.Parameters.$ParameterName if ($null -eq $ParameterObject.defaultValue) { if ($ParameterObject.type -eq 'Array') { $defaultValue = @() } elseif ($ParameterObject.type -eq 'Object') { $defaultValue = @{} } else { $defaultValue = "" } } elseif ($ParameterObject.defaultValue -like "*()*") { $defaultValue = "" } else { $defaultValue = $ParameterObject.defaultValue } $parameters[$parameterName] = @{ value = $defaultValue } } $parameterBase['parameters'] = $parameters ConvertTo-Json -InputObject $parameterBase -Depth 100 | Out-File "$($file.DirectoryName)\$filename.parameters.json" } |