场景:以资源组名称列出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列表,如初始尝试方法的错误输出中所示?
答案 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方式。