2017-07-06 2 views
0

Ich versuche, einige Eigenschaften in einer Template-Parameterdatei in einem Powershell-Skript zu überschreiben und dann das Objekt an das Cmdlet Test-AzureRmResourceGroupDeployment zu übergeben, um es zu testen. Die folgenden Arbeiten;Test-AzureRmResourceGroupDeployment funktioniert mit TemplateParameterFile, aber nicht mit TemplateParameterObject

Test-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateFile 'template.json' -TemplateParameterFile 'parameters.json' 

Aber es funktioniert nicht, wenn ich die Parameter laden und das Objekt übergeben;

$params = Get-Content 'parameters.json' | Out-String | ConvertFrom-Json | ConvertPSObjectToHashtable 
Test-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateFile 'template.json' -TemplateParameterObject $params.parameters 

Die ConvertPSObjectToHashtable Funktion ist ein I from here bekam.

Wenn ich den zweiten Befehl ausführen, erhalte ich den folgenden Fehler;

Code : InvalidTemplate 
Message : Deployment template validation failed: 'The provided value for the template parameter 'location' at line '7' and column '22' is not valid.'. 
Details : 

Warum akzeptiert es nicht die Parameter Objekt, und wie kann ich es beheben?

Antwort

1

Ich teste in meinem Labor, ich bekomme das gleiche Fehlerprotokoll mit Ihnen. Die Wurzel Grund ist Azure json Vorlage ist wie unten:

"adminUsername": { 
     "value": "ghuser" 
    }, 

Wenn json Vorlage wie unten ist, wird die Funktion arbeiten.

"adminUsername":"ghuser" 

Sie können auch in Ihrem Labor testen, wenn Sie folgende Parameter - TemplateParameterObject übertragen, es funktioniert gut.

PS D:\compare> $parms 

Name       Value 
----       ----- 
adminPassword     ******** 
dnsLabelPrefix     shuitest123 
adminUsername     shui 

jedoch Ihr $params.parameters ist wie unten:

PS D:\compare> $params.parameters 

Name       Value 
----       ----- 
adminPassword     {value} 
dnsLabelPrefix     {value} 
adminUsername     {value} 

Was brauchen Sie ist Azure Parameter JSON-Datei zu adminUsername:shui oder modifizieren JSON-Datei wie "adminUsername":"ghuser" zu tun konvertieren.

+0

Ah ok. Danke für die Tipps. Leider ist das '-TemplateParameterObject' nicht sehr gut dokumentiert. Ihr Vorschlag funktioniert möglicherweise nicht für ein Kennwort, das als Verweis auf ein Schlüsselverwaltungsgeheimnis übergeben wird. Ich kann es immer versuchen. – Steztric

Verwandte Themen