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