Repository navigation
[NetCore 0.13.1] AzureRM.NetCore\[New|Get]-AzureRmResourceGroupDeployment returns parameter as Json objects/arrays #7410
Copy link
Copy link
Closed as not planned
Closed as not planned
Copy link
Labels
ARMARM - TemplatesService AttentionThis issue is responsible by Azure service team.This issue is responsible by Azure service team.act-identity-squadcustomer-reportedfeature-requestThis issue requires a new behavior in the product in order be resolved.This issue requires a new behavior in the product in order be resolved.
Description
Description
The AzureRM functions New-AzureRmResourceGroupDeployment and Get-AzureRmResourceGroupDeployment return an object that contains a hashtable of parameters used at deployment time. When the parameter is of type Object or Array, the value in the hashtable doesn't match what was provided.
Script/Steps for Reproduction
# 1. Download the test
$complexTemplateURL = "https://github.com/Azure/azure-powershell/raw/master/src/ResourceManager/Resources/Commands.Resources.Test/complexParametersTemplate.json"
$response = Invoke-WebRequest -Uri $complexTemplateURL
if ($response.StatusCode -ne "200") {throw "Download Failed"}
$response.Content | Out-File "complexParametersTemplate.json" -Force
# 2. Create a Resource Group
$resourceGroupName = "deploymentTest-rg"
$location = "East US"
$rg = New-AzureRmResourceGroup -Name $resourceGroupName -Location $location
if ($null -eq $rg) {throw "Sort the problem with the resource group"}
# 3. Deploy a the test template
$templateParameters = @{
appSku = @{
code = "f1"
name = "Free"
}
servicePlan = "PlanBOSpace"
ranks = @("a", "b")
}
$deployment = New-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateParameterObject $templateParameters -TemplateFile "complexParametersTemplate.json" -Confirm:$false -Force
# 4. Verify that the output parameters match the input.
# The deployment variable here is the same as above.
$workaround = $false
$deployment = Get-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName
foreach ($parameter in $deployment.Parameters.Keys) {
$deploymentParameterValue = $deployment.Parameters.$parameter.Value
# This workaround requires PowerShell Core 6.1
if (($workaround) -and ($deployment.Parameters.$parameter.Type -eq "Object")) {
Write-Verbose "Comparing an object."
$deploymentParameterValue = ($deployment.Parameters.$parameter.Value.ToString() | ConvertFrom-Json -AsHashtable)
}
# This workaround works with PowerShell 5.1
if (($workaround) -and ($deployment.Parameters.$parameter.Type -eq "Array")) {
Write-Verbose "Comparing an array."
$deploymentParameterValue = ($deployment.Parameters.$parameter.Value.ToString() | ConvertFrom-Json)
}
$objectComparisonResult = Compare-Object -ReferenceObject $templateParameters.$parameter -DifferenceObject $deploymentParameterValue
if ($null -eq $objectComparisonResult) {
Write-Host ("Matched: {0} {1} {2}" -f $parameter, $deployment.Parameters.$parameter.Type, $deployment.Parameters.$parameter.Value)
} else {
Write-Host "Failed!!"
$objectComparisonResult
}
}Module Version
Get-Module -ListAvailable
Directory: C:\Program Files\PowerShell\Modules
ModuleType Version Name PSEdition ExportedCommands
---------- ------- ---- --------- ----------------
Script 0.13.1 Azure.AnalysisServices.Netcore Core {Add-AzureAnalysisServicesAccount, Restart-Azure...
Script 0.13.1 Azure.Storage.Netcore Core {Get-AzureStorageTable, New-AzureStorageTableSAS...
Script 0.13.1 AzureRM.Aks.Netcore Core {Get-AzureRmAks, New-AzureRmAks, Remove-AzureRmA...
Script 0.13.1 AzureRM.AnalysisServices.Netcore Core {Resume-AzureRmAnalysisServicesServer, Suspend-A...
Script 0.13.1 AzureRM.ApiManagement.Netcore Core {Add-AzureRmApiManagementRegion, Get-AzureRmApiM...
Script 0.13.1 AzureRM.ApplicationInsights.Netcore Core {Get-AzureRmApplicationInsights, New-AzureRmAppl...
Script 0.13.1 AzureRM.Automation.Netcore Core {Get-AzureRMAutomationHybridWorkerGroup, Get-Azu...
Script 0.13.1 AzureRM.Batch.Netcore Core {Remove-AzureRmBatchAccount, Get-AzureRmBatchAcc...
Script 0.13.1 AzureRM.Billing.Netcore Core {Get-AzureRmBillingInvoice, Get-AzureRmBillingPe...
Script 0.13.1 AzureRM.Cdn.Netcore Core {Get-AzureRmCdnProfile, Get-AzureRmCdnProfileSso...
Script 0.13.1 AzureRM.CognitiveServices.Netcore Core {Get-AzureRmCognitiveServicesAccount, Get-AzureR...
Script 0.13.1 AzureRM.Compute.Netcore Core {Remove-AzureRmAvailabilitySet, Get-AzureRmAvail...
Script 0.13.1 AzureRM.Consumption.Netcore Core {Get-AzureRmConsumptionBudget, Get-AzureRmConsum...
Script 0.13.1 AzureRM.ContainerInstance.Netcore Core {New-AzureRmContainerGroup, Get-AzureRmContainer...
Script 0.13.1 AzureRM.ContainerRegistry.Netcore Core {New-AzureRmContainerRegistry, Get-AzureRmContai...
Script 0.13.1 AzureRM.DataLakeAnalytics.Netcore Core {Get-AzureRmDataLakeAnalyticsDataSource, New-Azu...
Script 0.13.1 AzureRM.DataLakeStore.Netcore Core {Get-AzureRmDataLakeStoreTrustedIdProvider, Remo...
Script 0.13.1 AzureRM.DevTestLabs.Netcore Core {Get-AzureRmDtlAllowedVMSizesPolicy, Get-AzureRm...
Script 0.13.1 AzureRM.Dns.Netcore Core {Get-AzureRmDnsRecordSet, New-AzureRmDnsRecordCo...
Script 0.13.1 AzureRM.EventGrid.Netcore Core {New-AzureRmEventGridTopic, Get-AzureRmEventGrid...
Script 0.13.1 AzureRM.EventHub.Netcore Core {New-AzureRmEventHubNamespace, Get-AzureRmEventH...
Script 0.13.1 AzureRM.Insights.Netcore Core {Get-AzureRmMetricDefinition, Get-AzureRmMetric,...
Script 0.13.1 AzureRM.IotHub.Netcore Core {Add-AzureRmIotHubKey, Get-AzureRmIotHubEventHub...
Script 0.13.1 AzureRM.KeyVault.Netcore Core {Add-AzureKeyVaultCertificate, Update-AzureKeyVa...
Script 0.13.1 AzureRM.LogicApp.Netcore Core {Get-AzureRmIntegrationAccountAgreement, Get-Azu...
Script 0.13.1 AzureRM.MachineLearning.Netcore Core {Move-AzureRmMlCommitmentAssociation, Get-AzureR...
Script 0.13.1 AzureRM.MachineLearningCompute.N... Core {Get-AzureRmMlOpCluster, Get-AzureRmMlOpClusterK...
Script 0.13.1 AzureRM.MarketplaceOrdering.Netcore Core {Get-AzureRmMarketplaceTerms, Set-AzureRmMarketp...
Script 0.13.1 AzureRM.Media.Netcore Core {Sync-AzureRmMediaServiceStorageKeys, Set-AzureR...
Script 0.13.1 AzureRM.Netcore Core
Script 0.13.1 AzureRM.Network.Netcore Core {Add-AzureRmApplicationGatewayAuthenticationCert...
Script 0.13.1 AzureRM.NotificationHubs.Netcore Core {Get-AzureRmNotificationHub, Get-AzureRmNotifica...
Script 0.13.1 AzureRM.OperationalInsights.Netcore Core {New-AzureRmOperationalInsightsAzureActivityLogD...
Script 0.13.1 AzureRM.PolicyInsights.Netcore Core {Get-AzureRmPolicyEvent, Get-AzureRmPolicyState,...
Script 0.13.1 AzureRM.PowerBIEmbedded.Netcore Core {Remove-AzureRmPowerBIWorkspaceCollection, Get-A...
Script 0.13.1 AzureRM.Profile.Netcore Core {Disable-AzureRmDataCollection, Disable-AzureRmC...
Script 0.13.1 AzureRM.Relay.Netcore Core {New-AzureRmRelayNamespace, Get-AzureRmRelayName...
Script 0.13.1 AzureRM.Resources.Netcore Core {Get-AzureRmProviderOperation, Remove-AzureRmRol...
Script 0.13.1 AzureRM.ServiceBus.Netcore Core {New-AzureRmServiceBusNamespace, Get-AzureRmServ...
Script 0.13.1 AzureRM.ServiceFabric.Netcore Core {Add-AzureRmServiceFabricApplicationCertificate,...
Script 0.13.1 AzureRM.Sql.Netcore Core {Get-AzureRmSqlDatabaseTransparentDataEncryption...
Script 0.13.1 AzureRM.Storage.Netcore Core {Get-AzureRmStorageAccount, Get-AzureRmStorageAc...
Script 0.13.1 AzureRM.StreamAnalytics.Netcore Core {Get-AzureRmStreamAnalyticsFunction, Get-AzureRm...
Script 0.13.1 AzureRM.Tags.Netcore Core {Remove-AzureRmTag, Get-AzureRmTag, New-AzureRmTag}
Script 0.13.1 AzureRM.TrafficManager.Netcore Core {Disable-AzureRmTrafficManagerEndpoint, Enable-A...
Script 0.13.1 AzureRM.UsageAggregates.Netcore Core Get-UsageAggregates
Script 0.13.1 AzureRM.Websites.Netcore Core {Get-AzureRmAppServicePlan, Set-AzureRmAppServic...
Script 5.4.1 InvokeBuild Desk {Invoke-Build, Build-Checkpoint, Build-Parallel}
Script 4.4.0 Pester Desk {Describe, Context, It, Should...}
Script 4.7.1 psake Desk {Invoke-psake, Invoke-Task, Get-PSakeScriptTasks...
Script 0.2.26 PSCodeHealth Desk {Invoke-PSCodeHealth, Get-PSCodeHealthCompliance...
Script 1.17.1 PSScriptAnalyzer Desk {Get-ScriptAnalyzerRule, Invoke-ScriptAnalyzer, ...
Directory: C:\program files\powershell\6\Modules
ModuleType Version Name PSEdition ExportedCommands
---------- ------- ---- --------- ----------------
Manifest 6.1.0.0 CimCmdlets Core {Get-CimAssociatedInstance, Get-CimClass, Get-Ci...
Manifest 1.1.0.0 Microsoft.PowerShell.Archive Desk {Compress-Archive, Expand-Archive}
Manifest 6.1.0.0 Microsoft.PowerShell.Diagnostics Core {Get-WinEvent, New-WinEvent}
Manifest 6.1.0.0 Microsoft.PowerShell.Host Core {Start-Transcript, Stop-Transcript}
Manifest 6.1.0.0 Microsoft.PowerShell.Management Core {Add-Content, Clear-Content, Clear-ItemProperty,...
Manifest 6.1.0.0 Microsoft.PowerShell.Security Core {Get-Acl, Set-Acl, Get-PfxCertificate, Get-Crede...
Manifest 6.1.0.0 Microsoft.PowerShell.Utility Core {Format-List, Format-Custom, Format-Table, Forma...
Manifest 6.1.0.0 Microsoft.WSMan.Management Core {Disable-WSManCredSSP, Enable-WSManCredSSP, Get-...
Script 1.1.7.2 PackageManagement Desk {Find-Package, Get-Package, Get-PackageProvider,...
Script 1.6.7 PowerShellGet Desk {Find-Command, Find-DSCResource, Find-Module, Fi...
Script 0.0 PSDesiredStateConfiguration Desk {GetImplementingModulePath, GetPatterns, Set-Nod...
Script 6.1.0.0 PSDiagnostics Core {Disable-PSTrace, Disable-PSWSManCombinedTrace, ...
Script 2.0.0 PSReadLine Desk {Get-PSReadLineKeyHandler, Set-PSReadLineKeyHand...
Binary 1.1.2 ThreadJob Desk Start-ThreadJobEnvironment Data
$PSVersionTable
Name Value
---- -----
PSVersion 6.1.0
PSEdition Core
GitCommitId 6.1.0
OS Microsoft Windows 10.0.17134
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0Debug Output
PS C:\src\github> $DebugPreference='Continue'
PS C:\src\github>
PS C:\src\github> # 1. Download the test
PS C:\src\github> $complexTemplateURL = "https://github.com/Azure/azure-powershell/raw/master/src/ResourceManager/Resources/Commands.Resources.Test/complexParametersTemplate.json"
PS C:\src\github> $response = Invoke-WebRequest -Uri $complexTemplateURL
PS C:\src\github> if ($response.StatusCode -ne "200") {throw "Download Failed"}
PS C:\src\github> $response.Content | Out-File "complexParametersTemplate.json" -Force
PS C:\src\github>
PS C:\src\github> # 2. Create a Resource Group
PS C:\src\github> $resourceGroupName = "deploymentTest-rg"
PS C:\src\github> $location = "East US"
PS C:\src\github> $rg = New-AzureRmResourceGroup -Name $resourceGroupName -Location $location
DEBUG: 1:14:32 PM - NewAzureResourceGroupCmdlet begin processing with ParameterSet '__AllParameterSets'.
DEBUG: 1:14:32 PM - using account id 'user@domain.com'...
DEBUG: [Common.Authentication]: Authenticating using Account: 'user@domain.com', environment: 'AzureCloud', tenant: 'd6f493b6-8cac-4ce3-ad45-59648959894e'
DEBUG: ============================ HTTP REQUEST ============================
HTTP Method:
HEAD
Absolute Uri:
https://management.azure.com/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourcegroups/deploymentTest-rg?api-version=2017-05-10
Headers:
x-ms-client-request-id : ecfcc5d2-abda-4fe3-bf14-2274eb77d556
Accept-Language : en-US
Body:
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
NotFound
Headers:
Cache-Control : no-cache
Pragma : no-cache
x-ms-failure-cause : gateway
x-ms-ratelimit-remaining-subscription-reads: 11999
x-ms-request-id : 6637953a-31af-47fd-b74d-bf089127958c
x-ms-correlation-request-id : 6637953a-31af-47fd-b74d-bf089127958c
x-ms-routing-request-id : NORTHCENTRALUS:20180927T181433Z:6637953a-31af-47fd-b74d-bf089127958c
Strict-Transport-Security : max-age=31536000; includeSubDomains
X-Content-Type-Options : nosniff
Date : Thu, 27 Sep 2018 18:14:32 GMT
Body:
DEBUG: ============================ HTTP REQUEST ============================
HTTP Method:
PUT
Absolute Uri:
https://management.azure.com/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourcegroups/deploymentTest-rg?api-version=2017-05-10
Headers:
x-ms-client-request-id : 84e2f644-a4d1-4e79-86cc-61a40e817071
Accept-Language : en-US
Body:
{
"location": "East US"
}
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
Created
Headers:
Cache-Control : no-cache
Pragma : no-cache
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-request-id : 58fb2124-418c-437d-986d-0505f40bf717
x-ms-correlation-request-id : 58fb2124-418c-437d-986d-0505f40bf717
x-ms-routing-request-id : NORTHCENTRALUS:20180927T181434Z:58fb2124-418c-437d-986d-0505f40bf717
Strict-Transport-Security : max-age=31536000; includeSubDomains
X-Content-Type-Options : nosniff
Date : Thu, 27 Sep 2018 18:14:34 GMT
Body:
{
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg",
"name": "deploymentTest-rg",
"location": "eastus",
"properties": {
"provisioningState": "Succeeded"
}
}
DEBUG: AzureQoSEvent: CommandName - New-AzureRmResourceGroup; IsSuccess - True; Duration - 00:00:01.1194746; Exception - ;
DEBUG: Finish sending metric.
DEBUG: 1:14:34 PM - NewAzureResourceGroupCmdlet end processing.
DEBUG: 1:14:34 PM - NewAzureResourceGroupCmdlet end processing.
PS C:\src\github> if ($null -eq $rg) {throw "Sort the problem with the resource group"}
PS C:\src\github>
PS C:\src\github> # 3. Deploy a the test template
PS C:\src\github> $templateParameters = @{
>> appSku = @{
>> code = "f1"
>> name = "Free"
>> }
>> servicePlan = "PlanBOSpace"
>> ranks = @("a", "b")
>> }
PS C:\src\github> $deployment = New-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateParameterObject $templateParameters -TemplateFile "complexParametersTemplate.json" -Confirm:$false -Force
DEBUG: 1:14:34 PM - NewAzureResourceGroupDeploymentCmdlet begin processing with ParameterSet 'ByTemplateFileAndParameterObject'.
DEBUG: 1:14:34 PM - using account id 'user@domain.com'...
DEBUG: [Common.Authentication]: Authenticating using Account: 'user@domain.com', environment: 'AzureCloud', tenant: 'd6f493b6-8cac-4ce3-ad45-59648959894e'
DEBUG: ============================ HTTP REQUEST ============================
HTTP Method:
POST
Absolute Uri:
https://management.azure.com/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourcegroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate/validate?api-version=2017-05-10
Headers:
x-ms-client-request-id : f11866e0-47b1-4843-b9dc-837b14c9adbc
Accept-Language : en-US
Body:
{
"properties": {
"template": {
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"appSku": {
"type": "object",
"allowedValues": [
{
"code": "f1",
"name": "Free"
},
{
"code": "f2",
"name": "Shared"
},
{
"code": "f3",
"name": {
"major": "Official",
"minor": "1.0"
}
}
],
"defaultValue": {
"code": "f1",
"name": "Free"
}
},
"servicePlan": {
"type": "string"
},
"ranks": {
"type": "array",
"allowedValues": [
[
"a",
"b"
],
[
"c",
"d"
],
[
"d",
"e",
"f"
]
],
"defaultValue": [
"a",
"b"
]
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[concat('tianotest010', parameters('appSku').code, parameters('ranks')[0])]",
"apiVersion": "2015-06-15",
"location": "[resourceGroup().location]",
"properties": {
"accountType": "Standard_LRS"
}
}
],
"outputs": {}
},
"parameters": {
"appSku": {
"value": {
"code": "f1",
"name": "Free"
}
},
"servicePlan": {
"value": "PlanBOSpace"
},
"ranks": {
"value": [
"a",
"b"
]
}
},
"mode": "Incremental"
}
}
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
OK
Headers:
Cache-Control : no-cache
Pragma : no-cache
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-request-id : 77b3ec30-64cc-4f79-add2-a7e2c74613c1
x-ms-correlation-request-id : 77b3ec30-64cc-4f79-add2-a7e2c74613c1
x-ms-routing-request-id : NORTHCENTRALUS:20180927T181436Z:77b3ec30-64cc-4f79-add2-a7e2c74613c1
Strict-Transport-Security : max-age=31536000; includeSubDomains
X-Content-Type-Options : nosniff
Date : Thu, 27 Sep 2018 18:14:36 GMT
Body:
{
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate",
"name": "complexParametersTemplate",
"properties": {
"templateHash": "6287512875150736918",
"parameters": {
"appSku": {
"type": "Object",
"value": {
"code": "f1",
"name": "Free"
}
},
"servicePlan": {
"type": "String",
"value": "PlanBOSpace"
},
"ranks": {
"type": "Array",
"value": [
"a",
"b"
]
}
},
"mode": "Incremental",
"provisioningState": "Succeeded",
"timestamp": "2018-09-27T18:14:36.4520202Z",
"duration": "PT0S",
"correlationId": "77b3ec30-64cc-4f79-add2-a7e2c74613c1",
"providers": [
{
"namespace": "Microsoft.Storage",
"resourceTypes": [
{
"resourceType": "storageAccounts",
"locations": [
"eastus"
]
}
]
}
],
"dependencies": [],
"validatedResources": [
{
"apiVersion": "2015-06-15",
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Storage/storageAccounts/tianotest010f1a",
"name": "tianotest010f1a",
"type": "Microsoft.Storage/storageAccounts",
"location": "eastus",
"properties": {
"accountType": "Standard_LRS"
}
}
]
}
}
DEBUG: ============================ HTTP REQUEST ============================
HTTP Method:
PUT
Absolute Uri:
https://management.azure.com/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourcegroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate?api-version=2017-05-10
Headers:
x-ms-client-request-id : ee9f50e7-cea3-48fd-98d8-e78379fc3039
Accept-Language : en-US
Body:
{
"properties": {
"template": {
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"appSku": {
"type": "object",
"allowedValues": [
{
"code": "f1",
"name": "Free"
},
{
"code": "f2",
"name": "Shared"
},
{
"code": "f3",
"name": {
"major": "Official",
"minor": "1.0"
}
}
],
"defaultValue": {
"code": "f1",
"name": "Free"
}
},
"servicePlan": {
"type": "string"
},
"ranks": {
"type": "array",
"allowedValues": [
[
"a",
"b"
],
[
"c",
"d"
],
[
"d",
"e",
"f"
]
],
"defaultValue": [
"a",
"b"
]
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[concat('tianotest010', parameters('appSku').code, parameters('ranks')[0])]",
"apiVersion": "2015-06-15",
"location": "[resourceGroup().location]",
"properties": {
"accountType": "Standard_LRS"
}
}
],
"outputs": {}
},
"parameters": {
"appSku": {
"value": {
"code": "f1",
"name": "Free"
}
},
"servicePlan": {
"value": "PlanBOSpace"
},
"ranks": {
"value": [
"a",
"b"
]
}
},
"mode": "Incremental"
}
}
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
Created
Headers:
Cache-Control : no-cache
Pragma : no-cache
Azure-AsyncOperation : https://management.azure.com/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourcegroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate/operationStatuses/08586635348074992115?api-version=2017-05-10
x-ms-ratelimit-remaining-subscription-writes: 1198
x-ms-request-id : afa0e7ac-02b7-48cc-8a29-5bafefa83baa
x-ms-correlation-request-id : afa0e7ac-02b7-48cc-8a29-5bafefa83baa
x-ms-routing-request-id : NORTHCENTRALUS:20180927T181438Z:afa0e7ac-02b7-48cc-8a29-5bafefa83baa
Strict-Transport-Security : max-age=31536000; includeSubDomains
X-Content-Type-Options : nosniff
Date : Thu, 27 Sep 2018 18:14:37 GMT
Body:
{
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate",
"name": "complexParametersTemplate",
"properties": {
"templateHash": "6287512875150736918",
"parameters": {
"appSku": {
"type": "Object",
"value": {
"code": "f1",
"name": "Free"
}
},
"servicePlan": {
"type": "String",
"value": "PlanBOSpace"
},
"ranks": {
"type": "Array",
"value": [
"a",
"b"
]
}
},
"mode": "Incremental",
"provisioningState": "Accepted",
"timestamp": "2018-09-27T18:14:38.393472Z",
"duration": "PT0.4150674S",
"correlationId": "afa0e7ac-02b7-48cc-8a29-5bafefa83baa",
"providers": [
{
"namespace": "Microsoft.Storage",
"resourceTypes": [
{
"resourceType": "storageAccounts",
"locations": [
"eastus"
]
}
]
}
],
"dependencies": []
}
}
DEBUG: ============================ HTTP REQUEST ============================
HTTP Method:
GET
Absolute Uri:
https://management.azure.com/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourcegroups/deploymentTest-rg/deployments/complexParametersTemplate/operations?api-version=2017-05-10
Headers:
x-ms-client-request-id : 6a6dd2d2-e8b6-45bf-a073-ee17b7315292
Accept-Language : en-US
Body:
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
OK
Headers:
Cache-Control : no-cache
Pragma : no-cache
x-ms-ratelimit-remaining-subscription-reads: 11999
x-ms-request-id : 8a52558e-afa6-4a91-b0f6-bde4b115bf0a
x-ms-correlation-request-id : 8a52558e-afa6-4a91-b0f6-bde4b115bf0a
x-ms-routing-request-id : NORTHCENTRALUS:20180927T181443Z:8a52558e-afa6-4a91-b0f6-bde4b115bf0a
Strict-Transport-Security : max-age=31536000; includeSubDomains
X-Content-Type-Options : nosniff
Date : Thu, 27 Sep 2018 18:14:42 GMT
Body:
{
"value": [
{
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate/operations/10340A3D37B1A72D",
"operationId": "10340A3D37B1A72D",
"properties": {
"provisioningOperation": "Create",
"provisioningState": "Running",
"timestamp": "2018-09-27T18:14:43.5570664Z",
"duration": "PT4.808616S",
"trackingId": "e7462be3-1dae-4b9c-a96b-06bbd63fc898",
"serviceRequestId": "515c4e8c-c938-4e84-8da9-d6f604631014",
"statusCode": "Accepted",
"targetResource": {
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Storage/storageAccounts/tianotest010f1a",
"resourceType": "Microsoft.Storage/storageAccounts",
"resourceName": "tianotest010f1a"
}
}
}
]
}
DEBUG: ============================ HTTP REQUEST ============================
HTTP Method:
GET
Absolute Uri:
https://management.azure.com/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourcegroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate?api-version=2017-05-10
Headers:
x-ms-client-request-id : 0c95bbc1-576a-41a7-85d8-96f50989075e
Accept-Language : en-US
Body:
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
OK
Headers:
Cache-Control : no-cache
Pragma : no-cache
Retry-After : 18
x-ms-ratelimit-remaining-subscription-reads: 11998
x-ms-request-id : 1564e30d-9b3f-4dba-9e6f-ccbc82eeba06
x-ms-correlation-request-id : 1564e30d-9b3f-4dba-9e6f-ccbc82eeba06
x-ms-routing-request-id : NORTHCENTRALUS:20180927T181443Z:1564e30d-9b3f-4dba-9e6f-ccbc82eeba06
Strict-Transport-Security : max-age=31536000; includeSubDomains
X-Content-Type-Options : nosniff
Date : Thu, 27 Sep 2018 18:14:43 GMT
Body:
{
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate",
"name": "complexParametersTemplate",
"properties": {
"templateHash": "6287512875150736918",
"parameters": {
"appSku": {
"type": "Object",
"value": {
"code": "f1",
"name": "Free"
}
},
"servicePlan": {
"type": "String",
"value": "PlanBOSpace"
},
"ranks": {
"type": "Array",
"value": [
"a",
"b"
]
}
},
"mode": "Incremental",
"provisioningState": "Running",
"timestamp": "2018-09-27T18:14:43.4377325Z",
"duration": "PT5.4593279S",
"correlationId": "afa0e7ac-02b7-48cc-8a29-5bafefa83baa",
"providers": [
{
"namespace": "Microsoft.Storage",
"resourceTypes": [
{
"resourceType": "storageAccounts",
"locations": [
"eastus"
]
}
]
}
],
"dependencies": []
}
}
DEBUG: ============================ HTTP REQUEST ============================
HTTP Method:
GET
Absolute Uri:
https://management.azure.com/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourcegroups/deploymentTest-rg/deployments/complexParametersTemplate/operations?api-version=2017-05-10
Headers:
x-ms-client-request-id : eb667d32-371b-4ec3-90da-6ce71667b20d
Accept-Language : en-US
Body:
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
OK
Headers:
Cache-Control : no-cache
Pragma : no-cache
x-ms-ratelimit-remaining-subscription-reads: 11997
x-ms-request-id : 041c64af-3c58-45e1-8b31-964f10e25448
x-ms-correlation-request-id : 041c64af-3c58-45e1-8b31-964f10e25448
x-ms-routing-request-id : NORTHCENTRALUS:20180927T181502Z:041c64af-3c58-45e1-8b31-964f10e25448
Strict-Transport-Security : max-age=31536000; includeSubDomains
X-Content-Type-Options : nosniff
Date : Thu, 27 Sep 2018 18:15:01 GMT
Body:
{
"value": [
{
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate/operations/10340A3D37B1A72D",
"operationId": "10340A3D37B1A72D",
"properties": {
"provisioningOperation": "Create",
"provisioningState": "Running",
"timestamp": "2018-09-27T18:15:01.0131505Z",
"duration": "PT22.2647001S",
"trackingId": "67d862f3-f2d5-4f14-90c4-26b8df13149f",
"serviceRequestId": "515c4e8c-c938-4e84-8da9-d6f604631014",
"statusCode": "OK",
"targetResource": {
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Storage/storageAccounts/tianotest010f1a",
"resourceType": "Microsoft.Storage/storageAccounts",
"resourceName": "tianotest010f1a"
}
}
}
]
}
DEBUG: ============================ HTTP REQUEST ============================
HTTP Method:
GET
Absolute Uri:
https://management.azure.com/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourcegroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate?api-version=2017-05-10
Headers:
x-ms-client-request-id : cfcfecbf-9ec0-4a19-916f-a290877e86c9
Accept-Language : en-US
Body:
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
OK
Headers:
Cache-Control : no-cache
Pragma : no-cache
Retry-After : 5
x-ms-ratelimit-remaining-subscription-reads: 11996
x-ms-request-id : 20bd2cbf-4878-479c-9a9b-3eca233ad6b9
x-ms-correlation-request-id : 20bd2cbf-4878-479c-9a9b-3eca233ad6b9
x-ms-routing-request-id : NORTHCENTRALUS:20180927T181502Z:20bd2cbf-4878-479c-9a9b-3eca233ad6b9
Strict-Transport-Security : max-age=31536000; includeSubDomains
X-Content-Type-Options : nosniff
Date : Thu, 27 Sep 2018 18:15:01 GMT
Body:
{
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate",
"name": "complexParametersTemplate",
"properties": {
"templateHash": "6287512875150736918",
"parameters": {
"appSku": {
"type": "Object",
"value": {
"code": "f1",
"name": "Free"
}
},
"servicePlan": {
"type": "String",
"value": "PlanBOSpace"
},
"ranks": {
"type": "Array",
"value": [
"a",
"b"
]
}
},
"mode": "Incremental",
"provisioningState": "Running",
"timestamp": "2018-09-27T18:14:43.4377325Z",
"duration": "PT5.4593279S",
"correlationId": "afa0e7ac-02b7-48cc-8a29-5bafefa83baa",
"providers": [
{
"namespace": "Microsoft.Storage",
"resourceTypes": [
{
"resourceType": "storageAccounts",
"locations": [
"eastus"
]
}
]
}
],
"dependencies": []
}
}
DEBUG: ============================ HTTP REQUEST ============================
HTTP Method:
GET
Absolute Uri:
https://management.azure.com/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourcegroups/deploymentTest-rg/deployments/complexParametersTemplate/operations?api-version=2017-05-10
Headers:
x-ms-client-request-id : 199efca3-217a-4199-a2fd-23d50765f53e
Accept-Language : en-US
Body:
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
OK
Headers:
Cache-Control : no-cache
Pragma : no-cache
x-ms-ratelimit-remaining-subscription-reads: 11995
x-ms-request-id : 92c4acbb-90b6-4d68-8560-dc2ea7907710
x-ms-correlation-request-id : 92c4acbb-90b6-4d68-8560-dc2ea7907710
x-ms-routing-request-id : NORTHCENTRALUS:20180927T181507Z:92c4acbb-90b6-4d68-8560-dc2ea7907710
Strict-Transport-Security : max-age=31536000; includeSubDomains
X-Content-Type-Options : nosniff
Date : Thu, 27 Sep 2018 18:15:07 GMT
Body:
{
"value": [
{
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate/operations/10340A3D37B1A72D",
"operationId": "10340A3D37B1A72D",
"properties": {
"provisioningOperation": "Create",
"provisioningState": "Succeeded",
"timestamp": "2018-09-27T18:15:06.5575573Z",
"duration": "PT27.8091069S",
"trackingId": "d16a06ba-03f5-43d9-be97-fc192cb17e2f",
"serviceRequestId": "515c4e8c-c938-4e84-8da9-d6f604631014",
"statusCode": "OK",
"targetResource": {
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Storage/storageAccounts/tianotest010f1a",
"resourceType": "Microsoft.Storage/storageAccounts",
"resourceName": "tianotest010f1a"
}
}
}
]
}
DEBUG: ============================ HTTP REQUEST ============================
HTTP Method:
GET
Absolute Uri:
https://management.azure.com/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourcegroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate?api-version=2017-05-10
Headers:
x-ms-client-request-id : 68dadb07-eb8e-4699-a2b1-3c937948a59e
Accept-Language : en-US
Body:
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
OK
Headers:
Cache-Control : no-cache
Pragma : no-cache
Retry-After : 5
x-ms-ratelimit-remaining-subscription-reads: 11994
x-ms-request-id : f11ae0e7-9169-4cf6-8eb0-8086a1722da1
x-ms-correlation-request-id : f11ae0e7-9169-4cf6-8eb0-8086a1722da1
x-ms-routing-request-id : NORTHCENTRALUS:20180927T181507Z:f11ae0e7-9169-4cf6-8eb0-8086a1722da1
Strict-Transport-Security : max-age=31536000; includeSubDomains
X-Content-Type-Options : nosniff
Date : Thu, 27 Sep 2018 18:15:07 GMT
Body:
{
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate",
"name": "complexParametersTemplate",
"properties": {
"templateHash": "6287512875150736918",
"parameters": {
"appSku": {
"type": "Object",
"value": {
"code": "f1",
"name": "Free"
}
},
"servicePlan": {
"type": "String",
"value": "PlanBOSpace"
},
"ranks": {
"type": "Array",
"value": [
"a",
"b"
]
}
},
"mode": "Incremental",
"provisioningState": "Running",
"timestamp": "2018-09-27T18:14:43.4377325Z",
"duration": "PT5.4593279S",
"correlationId": "afa0e7ac-02b7-48cc-8a29-5bafefa83baa",
"providers": [
{
"namespace": "Microsoft.Storage",
"resourceTypes": [
{
"resourceType": "storageAccounts",
"locations": [
"eastus"
]
}
]
}
],
"dependencies": []
}
}
DEBUG: ============================ HTTP REQUEST ============================
HTTP Method:
GET
Absolute Uri:
https://management.azure.com/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourcegroups/deploymentTest-rg/deployments/complexParametersTemplate/operations?api-version=2017-05-10
Headers:
x-ms-client-request-id : 38da998b-9fe3-4674-88f7-dc42430b85dd
Accept-Language : en-US
Body:
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
OK
Headers:
Cache-Control : no-cache
Pragma : no-cache
x-ms-ratelimit-remaining-subscription-reads: 11993
x-ms-request-id : 4179f2cc-e5fa-478a-b6a0-b9a43d68085f
x-ms-correlation-request-id : 4179f2cc-e5fa-478a-b6a0-b9a43d68085f
x-ms-routing-request-id : NORTHCENTRALUS:20180927T181512Z:4179f2cc-e5fa-478a-b6a0-b9a43d68085f
Strict-Transport-Security : max-age=31536000; includeSubDomains
X-Content-Type-Options : nosniff
Date : Thu, 27 Sep 2018 18:15:12 GMT
Body:
{
"value": [
{
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate/operations/10340A3D37B1A72D",
"operationId": "10340A3D37B1A72D",
"properties": {
"provisioningOperation": "Create",
"provisioningState": "Succeeded",
"timestamp": "2018-09-27T18:15:06.5575573Z",
"duration": "PT27.8091069S",
"trackingId": "d16a06ba-03f5-43d9-be97-fc192cb17e2f",
"serviceRequestId": "515c4e8c-c938-4e84-8da9-d6f604631014",
"statusCode": "OK",
"targetResource": {
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Storage/storageAccounts/tianotest010f1a",
"resourceType": "Microsoft.Storage/storageAccounts",
"resourceName": "tianotest010f1a"
}
}
},
{
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate/operations/08586635348074992115",
"operationId": "08586635348074992115",
"properties": {
"provisioningOperation": "EvaluateDeploymentOutput",
"provisioningState": "Succeeded",
"timestamp": "2018-09-27T18:15:09.3254342Z",
"duration": "PT2.5212061S",
"trackingId": "76b7b63b-951a-48ed-b50c-28bcd52d1b96",
"statusCode": "OK",
"statusMessage": null
}
}
]
}
DEBUG: ============================ HTTP REQUEST ============================
HTTP Method:
GET
Absolute Uri:
https://management.azure.com/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourcegroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate?api-version=2017-05-10
Headers:
x-ms-client-request-id : ef4713c7-072e-4a78-a5ba-1275406bc680
Accept-Language : en-US
Body:
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
OK
Headers:
Cache-Control : no-cache
Pragma : no-cache
x-ms-ratelimit-remaining-subscription-reads: 11992
x-ms-request-id : 445d9768-20c2-44c9-8900-38b9ec1005fb
x-ms-correlation-request-id : 445d9768-20c2-44c9-8900-38b9ec1005fb
x-ms-routing-request-id : NORTHCENTRALUS:20180927T181512Z:445d9768-20c2-44c9-8900-38b9ec1005fb
Strict-Transport-Security : max-age=31536000; includeSubDomains
X-Content-Type-Options : nosniff
Date : Thu, 27 Sep 2018 18:15:12 GMT
Body:
{
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate",
"name": "complexParametersTemplate",
"properties": {
"templateHash": "6287512875150736918",
"parameters": {
"appSku": {
"type": "Object",
"value": {
"code": "f1",
"name": "Free"
}
},
"servicePlan": {
"type": "String",
"value": "PlanBOSpace"
},
"ranks": {
"type": "Array",
"value": [
"a",
"b"
]
}
},
"mode": "Incremental",
"provisioningState": "Succeeded",
"timestamp": "2018-09-27T18:15:09.3984169Z",
"duration": "PT31.4200123S",
"correlationId": "afa0e7ac-02b7-48cc-8a29-5bafefa83baa",
"providers": [
{
"namespace": "Microsoft.Storage",
"resourceTypes": [
{
"resourceType": "storageAccounts",
"locations": [
"eastus"
]
}
]
}
],
"dependencies": [],
"outputs": {},
"outputResources": [
{
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Storage/storageAccounts/tianotest010f1a"
}
]
}
}
DEBUG: AzureQoSEvent: CommandName - New-AzureRmResourceGroupDeployment; IsSuccess - True; Duration - 00:00:37.6451060; Exception - ;
DEBUG: Finish sending metric.
DEBUG: 1:15:12 PM - NewAzureResourceGroupDeploymentCmdlet end processing.
DEBUG: 1:15:12 PM - NewAzureResourceGroupDeploymentCmdlet end processing.
PS C:\src\github>
PS C:\src\github> # 4. Verify that the output parameters match the input.
PS C:\src\github> # The deployment variable here is the same as above.
PS C:\src\github> $workaround = $false
PS C:\src\github> $deployment = Get-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName
DEBUG: 1:15:12 PM - GetAzureResourceGroupDeploymentCmdlet begin processing with ParameterSet 'GetByResourceGroupDeploymentName'.
DEBUG: 1:15:12 PM - using account id 'user@domain.com'...
DEBUG: [Common.Authentication]: Authenticating using Account: 'user@domain.com', environment: 'AzureCloud', tenant: 'd6f493b6-8cac-4ce3-ad45-59648959894e'
DEBUG: ============================ HTTP REQUEST ============================
HTTP Method:
GET
Absolute Uri:
https://management.azure.com/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourcegroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/?api-version=2017-05-10
Headers:
x-ms-client-request-id : 0d747b75-950d-411f-b6d4-9700d04aa0ee
Accept-Language : en-US
Body:
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
OK
Headers:
Cache-Control : no-cache
Pragma : no-cache
x-ms-ratelimit-remaining-subscription-reads: 11999
x-ms-request-id : f4ba7c85-9367-4755-b9f4-0146e1081ec5
x-ms-correlation-request-id : f4ba7c85-9367-4755-b9f4-0146e1081ec5
x-ms-routing-request-id : NORTHCENTRALUS:20180927T181513Z:f4ba7c85-9367-4755-b9f4-0146e1081ec5
Strict-Transport-Security : max-age=31536000; includeSubDomains
X-Content-Type-Options : nosniff
Date : Thu, 27 Sep 2018 18:15:13 GMT
Body:
{
"value": [
{
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Resources/deployments/complexParametersTemplate",
"name": "complexParametersTemplate",
"properties": {
"templateHash": "6287512875150736918",
"parameters": {
"appSku": {
"type": "Object",
"value": {
"code": "f1",
"name": "Free"
}
},
"servicePlan": {
"type": "String",
"value": "PlanBOSpace"
},
"ranks": {
"type": "Array",
"value": [
"a",
"b"
]
}
},
"mode": "Incremental",
"provisioningState": "Succeeded",
"timestamp": "2018-09-27T18:15:09.3984169Z",
"duration": "PT31.4200123S",
"correlationId": "afa0e7ac-02b7-48cc-8a29-5bafefa83baa",
"providers": [
{
"namespace": "Microsoft.Storage",
"resourceTypes": [
{
"resourceType": "storageAccounts",
"locations": [
"eastus"
]
}
]
}
],
"dependencies": [],
"outputs": {},
"outputResources": [
{
"id": "/subscriptions/27188119-aa7b-45f4-ae3e-80d26b077cb9/resourceGroups/deploymentTest-rg/providers/Microsoft.Storage/storageAccounts/tianotest010f1a"
}
]
}
}
]
}
DEBUG: AzureQoSEvent: CommandName - Get-AzureRmResourceGroupDeployment; IsSuccess - True; Duration - 00:00:00.3684489; Exception - ;
DEBUG: Finish sending metric.
DEBUG: 1:15:14 PM - GetAzureResourceGroupDeploymentCmdlet end processing.
DEBUG: 1:15:14 PM - GetAzureResourceGroupDeploymentCmdlet end processing.
PS C:\src\github> foreach ($parameter in $deployment.Parameters.Keys) {
>> $deploymentParameterValue = $deployment.Parameters.$parameter.Value
>> # This workaround requires PowerShell Core 6.1
>> if (($workaround) -and ($deployment.Parameters.$parameter.Type -eq "Object")) {
>> Write-Verbose "Comparing an object."
>> $deploymentParameterValue = ($deployment.Parameters.$parameter.Value.ToString() | ConvertFrom-Json -AsHashtable)
>> }
>> # This workaround works with PowerShell 5.1
>> if (($workaround) -and ($deployment.Parameters.$parameter.Type -eq "Array")) {
>> Write-Verbose "Comparing an array."
>> $deploymentParameterValue = ($deployment.Parameters.$parameter.Value.ToString() | ConvertFrom-Json)
>> }
>> $objectComparisonResult = Compare-Object -ReferenceObject $templateParameters.$parameter -DifferenceObject $deploymentParameterValue
>> if ($null -eq $objectComparisonResult) {
>> Write-Host ("Matched: {0} {1} {2}" -f $parameter, $deployment.Parameters.$parameter.Type, $deployment.Parameters.$parameter.Value)
>> } else {
>> Write-Host "Failed!!"
>> $objectComparisonResult
>> }
>> }
Failed!!
Matched: servicePlan String PlanBOSpace
Failed!!
InputObject SideIndicator
----------- -------------
{} =>
{} =>
{code, name} <=
{} =>
{} =>
a <=
b <=
PS C:\src\github>
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
ARMARM - TemplatesService AttentionThis issue is responsible by Azure service team.This issue is responsible by Azure service team.act-identity-squadcustomer-reportedfeature-requestThis issue requires a new behavior in the product in order be resolved.This issue requires a new behavior in the product in order be resolved.
Activity
cormacpayne commentedon Oct 5, 2018
Ignacio Galarza, Jr. (@ignatz42) do you also see this issue when using the
AzureRM.Resourcesmodule? I want to see if this is an issue with the service or the .NET Core version of the module.ignatz42 commentedon Oct 6, 2018
Cormac McCarthy (@cormacpayne) Yes, if I understand your question, I see the same problem with AzureRM.Resources and should have noted that initially. I filled out the bug report sections with out from the same script in the original submission below. Thank you very much for looking at this problem. Please let me know if I can provide additional detail.
Module Version
Environment Data
Debug Output
7 remaining items
kutluomeroglu commentedon Jul 9, 2019
This issue is still relevant to new (Get|New)-AzResourceGroupDeployment, and it is an issue when you are linking multiple deployments / arm templates together with Az powershell modules.
This issue blocks you from passing arrays from an output of an ARM template as an input to another ARM template.
The version I am using:
matsest commentedon Jun 1, 2025
Still in issue in Az.Resources 7.11 - not being able to use output objects or arrays directly. The
ToString() | ConvertFrom-Jsonworkaround is not very nice.microsoft-github-policy-service commentedon Apr 10, 2026
🔔 Routing this issue to @act-identity-squad.
torreymicrosoft commentedon Jun 8, 2026
Thanks for your patience here — and apologies for the very long wait. This was recently picked up as an outstanding open issue for the ARM Deployments team to review, and thanks Mats Estensen (@matsest) for the June 2025 confirmation that it's still biting (and Kutlu Omeroglu (@kutluomeroglu) / Ignacio Galarza, Jr. (@ignatz42) earlier).
I reproduced this on Az.Resources 9.0.3, and the current picture is mixed:
.Parameters[...].Valueand.Outputs[...].Valuecome back as aNewtonsoft.Json.Linq.JObject, so direct property access ($out.Value.code) returns nothing. That's the cmdlet's output projection surfacing the raw JSON.NET type instead of a native PowerShell object — to answer Cormac McCarthy (@cormacpayne)'s original 2018 question, it's on the module side, not the service.rankscame back as a normalSystem.Object[]with usable elements, so the array half of this has improved since 2018.The workaround you already found is still the reliable one, and
-AsHashtablemakes it directly reusable for chaining into another deployment:I agree that's not pleasant, and converting object values to a native hashtable/PSObject in the deployment output is the right fix. Logging that as a quality improvement. I'll leave this open to track it — does the
-AsHashtableform above unblock your chaining scenario in the meantime?microsoft-github-policy-service commentedon Jun 8, 2026
🔔 Routing this issue to @act-identity-squad.
MaddyMicrosoft commentedon Aug 26, 2026
Torrey Trahanovsky (@torreymicrosoft) thanks for picking this up. Confirmed on our side: the JObject/Object[] shape comes from DeploymentVariable.Value being declared as object in src/Resources/Resources/Models.ResourceGroups/, so Newtonsoft leaves the JSON unwrapped.
Changing the default return shape to native types would be a breaking change for any script that relies on the current JObject API surface. Given the sparse demand signal over 8 years and there is a workaround, we're not planning that change.
Ignacio Galarza, Jr. (@ignatz42) Kutlu Omeroglu (@kutluomeroglu) Mats Estensen (@matsest) the workaround from the original description is the supported pattern here. If this is blocking a workflow for any of you, let us know and we'll reconsider. Happy to leave this open for a month or so for a reply, otherwise we'll close it out.
MaddyMicrosoft commentedon Oct 8, 2026
Closing this off due to lack of response. If you need any more help with this open and fresh issue and we will have a look.