Azure Powershell 脚本忽略默认值

Azure Powershell Script is ignoring defaultValue

我正在使用 PowerShell ISE 使用在 Azure 门户中为资源生成的脚本重新创建现有数据库。我发现 PS 没有使用脚本路径,所以我在顶部添加了这些行:

Write-Host $PSScriptRoot
Push-Location $PSScriptRoot
Write-Host "Path: $(get-location)"

我添加了一些测试代码以确保 template.json 和 parameters.json 存在并且正常工作:

# Start the deployment
Write-Host "Starting deployment...";
Write-Host "Testing: $templateFilePath"
if(Test-Path $templateFilePath) {
    Write-Host "FOUND: $templateFilePath"

    if(Test-Path $parametersFilePath) {
        Write-Host "FOUND: $parametersFilePath"
        New-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateFile $templateFilePath -TemplateParameterFile $parametersFilePath;
    } else {
        New-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateFile $templateFilePath;
    }

}

但是,脚本仍然忽略了 template.json 中的 defaultValue 参数:

"advisors_DropIndex_name": {
    "defaultValue": "DropIndex",
    "type": "String"
},

parameters.json:

"advisors_DropIndex_name": {
    "value": null
},

脚本returns如下:

New-AzureRmResourceGroupDeployment:5:17:30 PM - 错误:代码=InvalidDeploymentParameterValue;消息=部署参数“keys_ServiceManaged_name”的值为空。请明确说明 值或使用参数引用。有关详细信息,请参阅 https://aka.ms/arm-deploy/#parameter-file。 在 C:\Users\longoj\Downloads\ExportedTemplate-DEEAResourceGroup\deploy.ps1:110 char:9 + New-AzureRmResourceGroupDeployment -ResourceGroupName $resour ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [New-AzureRmResourceGroupDeployment], 异常 + FullyQualifiedErrorId : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.NewAzureResourceGroupDeploymentCmdlet

如果设置parameters.json中的值:

"advisors_DropIndex_name": {
    "value": "DropIndex"
},

脚本验证移至下一个参数,其中有很多。所以看起来 template.json 文件的默认值参数被忽略了。

我正在使用:

Version           : 5.1.2
Name              : Azure
Author            : Microsoft Corporation
PowerShellVersion : 3.0

我做错了什么?

如果在部署期间没有提供值(例如 parameters.json),将使用 defaultValue

在您的情况下,您提供的参数值是 null 并且根据错误消息它是无效的(例如 InvalidDeploymentParameterValue)。

如果您希望应用默认值,请从 parameters.json 文件中删除以下全部代码。

"advisors_DropIndex_name": {
    "value": null
},

https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-templates-parameters 找到更多详细信息。