functions/New-ALZPolicyDefaultStructure.ps1
function New-ALZPolicyDefaultStructure { Param( [Parameter(Mandatory = $false)] [string] $DefinitionsRootFolder, [ValidateSet('ALZ', 'FSI', 'AMBA', 'SLZ')] [string]$Type = 'ALZ', [string]$LibraryPath, [string]$Tag ) if ($DefinitionsRootFolder -eq "") { if ($null -eq $env:PAC_DEFINITIONS_FOLDER) { if ($ModuleRoot) { $DefinitionsRootFolder = "./Definitions" } else { $DefinitionsRootFolder = "$PSScriptRoot/../../Definitions" } } else { $DefinitionsRootFolder = $env:PAC_DEFINITIONS_FOLDER } } if ($LibraryPath -eq "") { if ($Tag) { git clone --depth 1 --branch $Tag https://github.com/anwather/Azure-Landing-Zones-Library.git .\temp $LibraryPath = ".\temp" } else { git clone --depth 1 https://github.com/anwather/Azure-Landing-Zones-Library.git .\temp $LibraryPath = ".\temp" } } $jsonOutput = @{ managementGroupNameMappings = @{} defaultParameterValues = @{} enforcementMode = "Default" } # Get Management Group Names $archetypeDefinitionFile = Get-Content -Path "$LibraryPath\platform\$($Type.ToLower())\architecture_definitions\$($Type.ToLower()).alz_architecture_definition.json" | ` ConvertFrom-Json foreach ($mg in $archetypeDefinitionFile.management_groups) { $obj = @{ management_group_function = $mg.display_Name value = "/providers/Microsoft.Management/managementGroups/$($mg.id)" } $jsonOutput.managementGroupNameMappings.Add($mg.id, $obj) } # Build Parameter Values $policyDefaultFile = Get-Content -Path "$LibraryPath\platform\$($Type.ToLower())\alz_policy_default_values.json" | ConvertFrom-Json foreach ($parameter in $policyDefaultFile.defaults) { $obj = @{ description = $parameter.description policy_assignment_name = $parameter.policy_assignments.policy_assignment_name parameters = @{ parameter_name = $parameter.policy_assignments[0].parameter_names[0] value = "" } } $jsonOutput.defaultParameterValues.Add($parameter.default_name, $obj) } Out-File "$DefinitionsRootFolder\$($Type.ToLower()).policy_default_structure.json" -InputObject ($jsonOutput | ConvertTo-Json -Depth 10) -Encoding utf8 -Force if ($LibraryPath -eq ".\temp") { Remove-Item .\temp -Recurse -Force -ErrorAction SilentlyContinue } } |