我正在准备一个脚本,我需要获取资源的特定ID,我尝试使用get-azurermresource
,但它仅给我提供-ResourceId
之类的值。对我来说,这不是此资源的唯一ID,因为当我们删除资源并用相同的名称重新创建资源时,ResourceId
将是相同的。如果使用Azure VM,我可以使用cmd-let-> GetAzVM
获得此唯一ID,我得到-> VmId : 604f7764-7ffe-4be0-b313-81ca9deda5ad
。但是其余的资源呢?是否有其他方法可以提及其他资源的“唯一ID”?
就Azure平台而言,ResourceID是唯一ID。它包含subscriptionId和资源名称。没错,但是,如果删除资源并在同一预订中创建另一个相同名称的资源,则它将具有相同的ResourceID,但此时它仍会唯一地标识创建的资源。
VmId是一个异常值,不仅用于唯一标识该VM,而且还可以跨其他可能创建,删除和重新创建的VM部署唯一标识该VM。这对于诸如许可之类的事情很有用,因为它是在SMBIOS级别设置的,无法更改。大多数(如果不是全部)其他资源类型没有这种类型的标识符。
如果您希望通过某种方法可以识别不同部署实例之间的资源,则可能更难处理直接来自平台的信息。您可能必须自己处理。标签可能是一个选择,具体取决于您要完成的工作。
要获得真正唯一的ID,您需要将您的subscriptionID以及ResourceGroupName和Provider合并在一起。这就是我们在后端执行的操作。例如,用于服务结构的VM磁盘ResourceID看起来像这样(get-azurermresource
将显示此内容):
/subscriptions/a4cd20a0-af7c-4278-8875-dc54076450f8/resourceGroups/MY-ResourceGroup/providers/Microsoft.Compute/disks/my_dev_disk00455