2017-07-06 3 views
0

テンプレートパラメータファイルのいくつかのプロパティをpowershellスクリプトでオーバーライドし、そのオブジェクトをTest-AzureRmResourceGroupDeploymentコマンドレットに渡してテストしようとしています。以下の作品。Test-AzureRmResourceGroupDeploymentはTemplateParameterFileでは使用できますが、TemplateParameterObjectでは使用できません

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

ただし、パラメータをロードしてオブジェクトを渡すと機能しません。

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

ConvertPSObjectToHashtable機能は、私がfrom hereを得たものです。

2番目のコマンドを実行すると、次のエラーが発生します。

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 : 

なぜパラメータオブジェクトを受け入れないのですか?どのように修正しますか?

答えて

1

私のラボでテストしますが、同じエラーログが表示されます。根本的な理由はAzure jsonテンプレートは以下のようなものです:

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

jsonテンプレートが以下のような場合、この関数は機能します。

"adminUsername":"ghuser" 

また、あなたが- TemplateParameterObjectに次のパラメータを転送する場合は、それが正常に動作し、あなたのラボでテストすることができ。

PS D:\compare> $parms 

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

はしかし、あなたの$params.parametersは以下のようなものです:

PS D:\compare> $params.parameters 

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

あなたがする必要がどのようなadminUsername:shuiにAzureのパラメータのJSONファイルを変換するか、または"adminUsername":"ghuser"のようなJSONファイルを修正しています。

+0

ああ。ヒントをありがとう。残念ながら、 '-TemplateParameterObject'はあまりよく書かれていません。キーボルトの秘密への参照として渡されるパスワードには、あなたの提案が機能しない可能性があります。私はいつも試してみることができます。 – Steztric

関連する問題