Test-AzureRmResourceGroupDeployment 适用于 TemplateParameterFile 但不适用于 TemplateParameterObject
Test-AzureRmResourceGroupDeployment works with TemplateParameterFile but not TemplateParameterObject
我试图在 powershell 脚本中覆盖模板参数文件中的某些属性,然后将对象传递给 Test-AzureRmResourceGroupDeployment
cmdlet 以对其进行测试。以下作品;
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。
当我运行第二个命令时,出现以下错误;
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 :
为什么它不接受参数对象,我该如何解决?
我在我的实验室测试,我得到了和你一样的错误日志。根本原因是 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}
您需要做的是将 Azure 参数 json 文件转换为 adminUsername:shui
或修改 json 文件,如 "adminUsername":"ghuser"
.
我试图在 powershell 脚本中覆盖模板参数文件中的某些属性,然后将对象传递给 Test-AzureRmResourceGroupDeployment
cmdlet 以对其进行测试。以下作品;
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。
当我运行第二个命令时,出现以下错误;
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 :
为什么它不接受参数对象,我该如何解决?
我在我的实验室测试,我得到了和你一样的错误日志。根本原因是 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}
您需要做的是将 Azure 参数 json 文件转换为 adminUsername:shui
或修改 json 文件,如 "adminUsername":"ghuser"
.