在Azure APIVersion上使用哪个或两组结果

时间:2017-12-20 07:15:40

标签: api azure azure-web-sites api-versioning

场景:以资源组名称列出WebApp。

  

尝试方法:

$WebAppApiVersion = "2015-08-01"
$MyResourceGroup = 'gurustorageRG'
Function saymyWebApps($ResourceGroupName)
 {
   Find-AzureRmResource -ResourceGroupName $ResourceGroupName -ResourceType $myResourceType -ApiVersion $WebAppApiVersion
 }

` saymyWebApps $MyResourceGroup
  

输出

     

Find-AzureRmResource:InvalidApiVersionParameter:api-version'2015-08-01'无效。支持的版本是'2017-08-01,2   017-06-01,2017-05-10,2017-05-01,2017-03-01,2016-09-01,2016-07-01,2016-06-01,2016-02-01,2015- 11-01,2015-01-01,2014-04-01预览,2014-   04-01,2014-01-01,2013-03-01,2014-02-26,2014-04' 。   在行:24 char:5   + Find-AzureRmResource -ResourceGroupName $ ResourceGroupName -Resou ...   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~       + CategoryInfo:CloseError:(:) [Find-AzureRmResource],ErrorResponseMessageException       + FullyQualifiedErrorId:InvalidApiVersionParameter,Microsoft.Azure.Commands.ResourceMan

所以,我从我列出的webapiversion参数的错误输出中挑选2017-08-01并重新尝试,奇怪的是它列出了今天创建的webapps,或者我认为此时可以列出2017-08-之后的任何应用程序设置01只。

  

问题1:这是否意味着,我必须提取可用的-apiversion并迭代它们以在资源组下构建整个webapp列表?

     

尝试查看-apiversion但输出似乎未完成或与输出块中的错误不匹配。

用于列出API版本的代码段:

Function GetAPIVersions()
 {
 ((Get-AzureRmResourceProvider -ProviderNamespace Microsoft.Web).ResourceTypes | Where-Object ResourceTypeName -eq sites).ApiVersions
}

GetAPIVersions
  

输出

     

2016年8月1日

     

2016年3月1日

     

2015年8月1日 - 预览

     

2015年8月1日

     

2015年7月1日

     

2015年6月1日

     

2015年5月1日

     

2015-04-01

     

2015年2月1日

     

2014年11月1日

     

2014-06-01

     

2014年4月1日预览

     

2014年4月1日

上述结果是成功执行apiversion listing snippet。

  

问题2:为什么上面的apiversion列表没有显示api-versions列表,如初始尝试方法的错误输出中所示?

1 个答案:

答案 0 :(得分:1)

我们可以使用fiddler捕获Find-AzureRmResource的执行,它使用List Resource API。我们可以发现参数-ApiVersion代表 list resource api版本与我们想要找到的资源类型无关。

  

问题2:为什么上面的apiversion列表没有显示api-versions列表,如初始尝试方法的错误输出所示?

您提到列出 Microsoft.Web 的API版本,输出api版本可用于操作WebApp,例如create or update azure webApp

所以 -ApiVersion 列表API版本是不同的。

总结:

如果我们想使用 Find-AzureRmResource 命令,我们需要使用错误信息中提到的api版本。

如果我们想找到操作sepicial资源类型资源api版本,我们可以使用你提到的列表api方式。