Functions/Get-ARMtemplate.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#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
    }    
}
   
}