-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
parse_arm_deployment_output.ps1
41 lines (35 loc) · 1.08 KB
/
parse_arm_deployment_output.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
# https://adamtheautomator.com/arm-templates-in-azure/
[CmdletBinding()]
param (
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$ArmOutputString,
[Parameter()]
[ValidateNotNullOrEmpty()]
[switch]$MakeOutput
)
Write-Output "Retrieved input: $ArmOutputString"
$armOutputObj = $ArmOutputString | ConvertFrom-Json
$armOutputObj.PSObject.Properties | ForEach-Object {
$type = ($_.value.type).ToLower()
$keyname = $_.Name
$vsoAttribs = @("task.setvariable variable=$keyName")
if ($type -eq "array") {
$value = $_.Value.value.name -join ',' ## All array variables will come out as comma-separated strings
}
elseif ($type -eq "securestring") {
$vsoAttribs += 'isSecret=true'
}
elseif ($type -ne "string") {
throw "Type '$type' is not supported for '$keyname'"
}
else {
$value = $_.Value.value
}
if ($MakeOutput.IsPresent) {
$vsoAttribs += 'isOutput=true'
}
$attribString = $vsoAttribs -join ';'
$var = "##vso[$attribString]$value"
Write-Output -InputObject $var
}