0

我有我使用部署到哪借此参数资源组的模板:参数传递到Azure的ARM模板

"envPrefixName": { 
    "type": "string", 
    "metadata": { 
    "description": "Prefix for the environment (2-5 characters)" 
    }, 
    "defaultValue": "cust1", 
    "minLength": 2, 
    "maxLength": 5 
}, 

我想使这个参数可以被覆盖时的值cdmlet被称为像这样:

$AzureParams = @{ 
     ResourceGroupName = $ResourceGroup 
     TemplateUri = $TemplateUri 
     TemplateParameterUri = $TemplateParamUri 
     Mode = "Complete" 
     envPrefixName = "sunlb" #Override default parameter value 
     Force = $true 
    } 

    New-AzureRmResourceGroupDeployment @AzureParams 

我试过这种方法,但该解决方案将继续尝试使用模板设置的值,而不是通过一个在我调用的参数传递。

编辑:这可能是TemplateParameterUri文件导致和问题?

回答

1

如果您提供TemplateParameterUri,它将使用参数文件来部署模板(并从文件中获取值),并且您的envPrefixName会因为不会评估模板中的参数而“丢失”。

TemplateParameterUri和您预期的那样(但你必须在这种情况下提供的所有参数,除非他们有默认值)

+0

好吧,我在想,可能是因为它会奏效。这是一个问题,如果你想通过param文件提供一些参数,但有些东西需要更加动态。这是一个不合理的用例吗? – Batman

+1

在模板中提供了默认值,而不是在参数文件中(你甚至可以这样做)。另一个选项 - 在部署前用powershell编辑参数文件 – 4c74356b41

+0

听起来不错,谢谢你的快速帮助。 – Batman