2017-07-06 3 views
0

Je tente de remplacer certaines propriétés d'un fichier de paramètres de modèle dans un script powershell, puis de passer l'objet à la cmdlet Test-AzureRmResourceGroupDeployment pour le tester. Les travaux suivantsTest-AzureRmResourceGroupDeployment fonctionne avec TemplateParameterFile mais pas TemplateParameterObject

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

Cependant, cela ne fonctionne pas lorsque je charge les paramètres et transmets l'objet;

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

La fonction ConvertPSObjectToHashtable est celle que je suis from here. Lorsque j'exécute la seconde commande, j'obtiens l'erreur suivante:

Pourquoi n'accepte-t-il pas l'objet parameters, et comment le corriger? Pourquoi?

Répondre

1

Je teste dans mon laboratoire, je reçois le même journal des erreurs avec vous. La raison racine est le modèle Azure json est comme ci-dessous:

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

Si modèle json est comme ci-dessous, la fonction fonctionnera.

"adminUsername":"ghuser" 

Vous pouvez également tester dans votre laboratoire, si vous transférez les paramètres suivants à - TemplateParameterObject, il fonctionne très bien.

PS D:\compare> $parms 

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

Cependant, votre $params.parameters est comme ci-dessous:

PS D:\compare> $params.parameters 

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

Ce que vous devez faire est de convertir le paramètre Azure fichier JSON adminUsername:shui ou modifier le fichier JSON comme "adminUsername":"ghuser".

+0

Ah ok. Merci pour les conseils. Malheureusement, le '-TemplateParameterObject' n'est pas très bien documenté. Votre suggestion peut ne pas fonctionner pour le mot de passe transmis comme référence à un secret de coffre-fort. Je peux toujours essayer. – Steztric