3

我使用下面的 Azure Powershell cmdlet 来验证 ARM 模板 json 和 ARM 模板参数 json 文件。

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

如果两个输入参数都有效,我希望 cmdlet 返回true (布尔类型)。

但是,结果是空的。

该文档也不清楚此 cmdlet 的预期响应。

我想知道我得到的回复是否是预期的回复。

注意:我在 Windows 10 机器上使用Azure PowerShell 版本 1.5(2016 年 6 月) 。

4

2 回答 2

5

查看此 Cmdlet 的源代码here,我认为它不会返回 true 或 false。它实际上返回一个类型为 的对象List<PSResourceManagerError>。如果您对$result对象进行计数,如果一切正常,它应该返回零。

于 2016-06-07T11:47:19.413 回答
1

这是一个方便的函数,用于创建一个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
    }
}
于 2018-08-06T17:53:46.597 回答