部署脚本需要从公共IP前缀枚举现有的公共IP地址。公共IP前缀对象包含单个公共IP地址的资源标识数组。
我希望使用提供的资源标识符检索单个公共ip地址。就像这样:
Get-AzPublicIpAddress -ResourceId $resourceId;不幸的是,这种签名并不存在。Get-AzPublicIpAddress期望ip地址名作为输入参数。
我知道我能做到:
问题-这是唯一的选择吗?或者Az提供了一种解析资源标识符的内置方式?
发布于 2019-03-06 06:42:44
Get-AzResource -resourceId xxx -ExpandProperties | fl *。它是一个通用的cmdlet,可用于任何资源。与Get-AzResource相比,如何将Get-AzPublicIpAddress称为额外的网络呼叫?它的1次呼叫对1次呼叫。
从资源id中获取资源名称相当容易:
$resourceId -split '/' | Select-Object -Last 1发布于 2019-03-06 03:12:28
我认为您不能将-ResourceId直接传递给命令,所有内置参数都在这里:https://learn.microsoft.com/en-us/powershell/module/az.network/get-azpublicipaddress?view=azps-1.4.0。我能找到的最接近的方法是你的选择2。
不确定为什么要通过Get-AzPublicIpAddress使用ResourceId,即使我们使用-Name和-ResourceGroupName (即Get-AzPublicIpAddress -Name <publicIpName> -ResourceGroupName <ResourceGroupName> ),它实际上也会将它们传递到rest命令调用的的请求url中。
GET https://management.azure.com/subscriptions/xxxxxxxxx/resourceGroups/joywebapp/providers/Microsoft.Network/publicIPAddresses/joyVM-ip?api-version=2018-10-01实际上,你可以找到/subscriptions/xxxxxxxxx/resourceGroups/joywebapp/providers/Microsoft.Network/publicIPAddresses/joyVM-ip是ResourceId。
因此,我认为微软添加-ResourceId作为Get-AzPublicIpAddress命令的占位符参数应该不会太困难,如果您想要改进它,可以给出反馈这里。
更新
微软已经回答了这个问题,见:https://github.com/Azure/azure-powershell/issues/8704#issuecomment-470604852。
感谢您打开此特性请求 提供资源的组件(例如,资源组名称、资源名称等)提供资源的资源id,提供资源的对象表示(有些cmdlet不使用这个,比如Get-*) 今年晚些时候,我们将开始使用AutoRest (有关详细信息,请参阅此博客文章。)生成cmdlet,上面的模式将在生成器中强制执行。我们的目标是为现有的Azure服务生成cmdlet,并用生成的cmdlet替换现有的cmdlet。
https://stackoverflow.com/questions/55014516
复制相似问题