Functions/Add-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 Add-ARMvariable { <# .SYNOPSIS Add an ARM variable to an ARM template. .DESCRIPTION Add an ARM variable to an ARM template .PARAMETER InputObject The PSCustomObject of type 'ARMvariable' to be added to the ARM template. .PARAMETER Template The ARM template of type 'ARMtemplate' the variable should be added to. If not specified, it will add the variable to the module-level template .EXAMPLE $nicName = New-ARMvariable -Name nicName -Value "myNIC" Add-ARMvariable -InputObject $nicName This will add the variable nicName to the module level template .EXAMPLE New-ARMvariable -Name nicName -Value "myNIC" | Add-ARMvariable -Template $myTemplate This will add the variable nicName to the userdefined template $myTemplate .INPUTS PSCustomObject .OUTPUTS PSCustomObject .NOTES Author: Tore Groneng Website: www.firstpoint.no Twitter: @ToreGroneng #> [cmdletbinding()] Param( [Parameter(Mandatory, ValueFromPipeline)] [PSTypeName('ARMvariable')] $InputObject , [PSTypeName('ARMtemplate')] $Template , [switch] $PassThru ) Begin { $f = $MyInvocation.InvocationName Write-Verbose -Message "$f - START" } Process { Write-Verbose -Message "$f - Processing" if (-not $Template) { Write-Verbose -Message "$f - Using module level template" $Template = $script:Template } if ($Template) { Write-Verbose -Message "$f - Have a template" foreach ($prop in $InputObject.PSobject.Properties) { $value = $prop.Value Write-Verbose -Message "$f - Processing property $($prop.Name)" $Template.variables | Add-Member -MemberType NoteProperty -Name $prop.Name -Value $value } } if ($PassThru.IsPresent) { $InputObject } } End { Write-Verbose -Message "$f - End" } } |