Сценарий Azure Powershell игнорирует значение по умолчанию - PullRequest
0 голосов
/ 29 июня 2018

Я использую 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;
    }

}

Однако скрипт все еще игнорирует параметры defaultValue в template.json:

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

parameters.json:

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

Скрипт возвращает следующее:

New-AzureRmResourceGroupDeployment: 17:17:30 - ошибка: Code = 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"
},

проверка скрипта переходит к следующему параметру, и их много. Похоже, параметр defaultvalue файла template.json игнорируется.

Я использую:

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

Что я делаю не так?

1 Ответ

0 голосов
/ 29 июня 2018

Значение defaultValue будет использоваться в случае, если во время развертывания не указано значение (например, parameters.json).

В вашем случае вы предоставляете значение этого параметра, которое равно null и недопустимо для каждого сообщения об ошибке (например, InvalidDeploymentParameterValue).

Удалите весь следующий код из файла parameters.json, если вы хотите применить значение по умолчанию.

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

Подробнее об этом можно узнать на https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-templates-parameters.

...