Functions/Get-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 90 91 92 93 94 95 96 97 |
#Requires -Version 5.0 function Get-ARMvariable { <# .SYNOPSIS Get all variable or a specific one by name. .DESCRIPTION Get all variable or a specific one by name. .PARAMETER Name Name of the variable to get. This is a dynamic parameter. .EXAMPLE Get-ARMvariable This will return all variables in the ARM template .EXAMPLE Get-ARMvariable -Name nicName This will get the variable with name nicName .INPUTS String .OUTPUTS PSCustomObject .NOTES Author: Tore Groneng Website: www.firstpoint.no Twitter: @ToreGroneng #> [CmdletBinding()] [OutputType('PSCustomObject')] Param() DynamicParam { $Dictionary = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary $NewDynParam = @{ Name = "Name" Mandatory = $false 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 if (-not $PSBoundParameters.ContainsKey("Template")) { $Template = $script:Template } if ($Name) { Write-Verbose -Message "$f - Finding parameter with name [$Name]" $Template.variables | Select-Object -Property $Name } else { Write-Verbose -Message "$f - Returning all variables" $Template.variables } } End { Write-Verbose -Message "$f - START" } } |