Functions/Set-ARMvariable.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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#Requires -Version 5.0
function Set-ARMvariable
{
<#
.SYNOPSIS
    Update an existing variable in the ARM template
 
.DESCRIPTION
    Update an existing variable in the ARM template
 
.PARAMETER Name
    The variable Name. This is a Mandatory parameter and is an dynamic parameter
 
.PARAMETER Value
    The new value for the variable. This is a Mandatory parameter
 
.EXAMPLE
    Set-ARMvariable -Name nicName -Value "MyNewNic"
 
    This will set the variable nicName to value "MyNewNic"
.INPUTS
    string
 
.OUTPUTS
 
.NOTES
    Author: Tore Groneng
    Website: www.firstpoint.no
    Twitter: @ToreGroneng
#>


[cmdletbinding()]
Param(    
    [Parameter(Mandatory)]
    $Value
)

DynamicParam
{
    $Dictionary = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

    $NewDynParam = @{
        Name = "Name"            
        Mandatory = $true
        ValueFromPipelineByPropertyName = $true
        ValueFromPipeline = $false
        DPDictionary = $Dictionary            
    }
    
    $allVariables = $script:Template.variables.PSobject.Properties.Name

    if ($allVariables)
    {
        $null = $NewDynParam.Add("ValidateSet",$allVariables)
    }
    else
    {
        $null = $NewDynParam.Add("ValidateSet",@("-"))
    }

    New-DynamicParam @NewDynParam
    $Dictionary
}

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

Process
{
    $Name = $PSBoundParameters.Name    

    $oldValue = Get-ARMVariable -Name $Name | Select-Object -ExpandProperty $Name
    Write-Verbose -Message "$f - Updating variable [$Name] from '$oldValue' to '$Value"
    
    if ($script:Template)
    {
        $script:Template.variables.$name = $Value
    }
}

End
{
    Write-Verbose -Message "$f - END"
    
}
}