Командлет Test-AzureRmResourceGroupDeployment возвращает значение "Пусто" при успешной проверке

Я использую приведенный ниже командлет Azure Powershell, чтобы проверить json-файлы ARM-шаблона и jms-файлов ARM-шаблона.

$result = Test-AzureRmResourceGroupDeployment -ResourceGroupName TestRG -TemplateFile TestARMTemplate.json -ApiVersion TestARMParams.json

Я ожидаю, что командлет вернет true (логический тип), если оба входных аргумента верны.

Тем не менее, результат пуст.

В документации также нет ясности относительно ожидаемого ответа этого командлета.

Я хотел бы знать, является ли полученный ответ ожидаемым или нет.

Примечание. Я использую Azure PowerShell версии 1.5 (июнь 2016 г.) на компьютере с Windows 10.

2 ответа

Решение

Глядя на исходный код этого командлета here Я не думаю, что это возвращает истину или ложь. На самом деле он возвращает объект типа List<PSResourceManagerError>, Если вы рассчитываете на $result объект, он должен вернуть вам ноль, если все в порядке.

Вот удобная функция для создания AggregateException содержащий всю информацию об ошибке из PSResourceManagerError

function New-DeploymentResultException([Microsoft.Azure.Commands.ResourceManager.Cmdlets.SdkModels.PSResourceManagerError]$error)
{
    $errorMessage = "$($error.Message) ($($error.Code)) [Target: $($error.Target)]"

    if ($error.Details)
    {
        $innerExceptions =  $error.Details | ForEach-Object { New-DeploymentResultException $_ }
        return New-Object System.AggregateException $errorMessage, $innerExceptions
    }
    else 
    { 
        return New-Object System.Configuration.ConfigurationErrorsException $errorMessage
    }
}
Другие вопросы по тегам