Functions/Get-ARMtemplate.ps1

#Requires -Version 5.0
function Get-ARMtemplate
{
<#
.SYNOPSIS
    Get the ARM template defined at the module level
 
.DESCRIPTION
    Get the ARM template defined at the module level
 
.PARAMETER AsJSON
    Returns the ARM template as a JSON string
 
.PARAMETER AsHashTableString
    Returns the ARM template as a Hashtable object
 
.EXAMPLE
    Get-ARMtemplate | Get-ARMtempateScript
 
.INPUTS
    PSCustomObject
 
.OUTPUTS
    string
 
.NOTES
    Author: Tore Groneng
    Website: www.firstpoint.no
    Twitter: @ToreGroneng
#>

[cmdletbinding(
    DefaultParameterSetName='foo'
)]
Param(
    [Parameter(ParameterSetName='JSON')]
    [switch]$AsJSON
    ,
    [Parameter(ParameterSetName='HASH')]
    [switch]$AsHashTableString
)

Begin
{
    $f = $MyInvocation.InvocationName
    Write-Verbose -Message "$f - START"    
}

Process
{
    if ($AsJSON.IsPresent -eq $false -and $AsHashTableString.IsPresent -eq $false)
    {
        $Script:Template
    }

    if ($AsJSON.IsPresent)
    {
        $json = $Script:Template | ConvertTo-Json -Depth 99
        $json = $json.replace("\u0027","'")#'
        $json
    }

    if ($AsHashTableString.IsPresent)
    {
        $Script:Template | ConvertTo-Hash | Out-HashString
    }    
}
   
}