使用powershell将带有模板参数的操作添加到azure api

时间:2018-04-04 05:21:01

标签: powershell azure azure-api-management

尝试使用powershell cmdlt New-AzureRmApiManagementOperation向Azure Api Management Api添加操作时,该命令将返回无法提供信息的响应:ValidationError: One or more fields contain incorrect values

当操作UrlTemplate不包含任何参数(即花括号中的url片段)时,命令会成功运行,但不处理它们存在的调用。

这可以按预期工作:

New-AzureRmApiManagementOperation -Context $context -ApiId $aid -OperationId $oid -Name $name -Method $method -UrlTemplate '/all'

但这并不是:

New-AzureRmApiManagementOperation -Context $context -ApiId $aid -OperationId $oid -Name $name -Method $method -UrlTemplate '/{id}'

1 个答案:

答案 0 :(得分:1)

似乎提供的信息in the documentation有些不准确。当参数存在时,TemplateParameters不是可选的,并且非常不自动生成。

必须存在Microsoft.Azure.Commands.ApiManagement.ServiceManagement.Models.PsApiManagementParameter类型的对象数组,并且对于url模板中的每个参数,它必须包含Name的元素,其值与参数值相同,并且{{1成为某些枚举的成员,可能与某些swagger定义相匹配。

以下代码从模板字符串生成此类数组:

Type

可以接着是:

$tparam = Select-String "{([^}]+)}" -input $template -AllMatches |
    Foreach { $_.matches } |
    Foreach {
        $p = New-Object -TypeName Microsoft.Azure.Commands.ApiManagement.ServiceManagement.Models.PsApiManagementParameter
        $p.Name = $_.Groups[1].Value
        $p.Type = "string"
        return $p
    }