Azure Windows VM - 如何找出它所在的资源组?

Azure Windows VM - how can I find out what Resource Group it is in?

我在 Azure Windows VM 上有 C# 代码 运行。有没有办法让我找出此 VM 所在的资源组?

已使用 Azure 资源管理部署 VM API(新的,非经典的)

找出资源组的一种方法是列出 Azure 订阅中的所有虚拟机。您将使用的 URL 是:

https://management.azure.com/subscriptions/[subscription-id]/providers/Microsoft.Compute/virtualMachines?api-version=2015-06-15

它将 return 以 JSON 格式为您列出 Azure 订阅中的所有虚拟机,其中每个项目代表一个虚拟机。您可以先按 name 属性 筛选以找到匹配的虚拟机。然后是对您很​​重要的 属性 id,它始终采用以下格式:

/subscriptions/[subscription-id]/resourceGroups/[resource-group-name]/providers/Microsoft.Compute/virtualMachines/[virtual-machine-name]

您可以简单地解析它以获取资源组名称。

您是如何部署虚拟机的?通过portal.azure.com?通过 CLI?电源外壳?在任何这些情况下,通常您都需要指定一个资源组名称。事实上,在门户中,如果您单击 "Virtual Machines",它应该说资源组:

resource group of VM in portal

以下将保证区分不同资源组中同名虚拟机的能力:

从您的 C# 代码中找到 vmId(涉及 运行 以下 link 或可能使用 Azure SDK 的命令之一:https://azure.microsoft.com/en-us/blog/accessing-and-using-azure-vm-unique-id/)。如果使用 Linux VM,请务必考虑不同的字节顺序,否则 vmId 将不匹配。

获得 vmId 后,您可以使用 CLI 或 Powershell(或可能是 Azure SDK)列出订阅中的所有 VM,然后搜索列表以查找哪个 VM 具有您从中获得的 vmId机器。然后,您应该能够从该 VM 的 json 的 "id" 字段中解析出资源组名称(正如 Gaurav 所提到的,它是一个包含资源组的字符串)。例如,请尝试以下操作:

azure vm list --json -vv

此命令将向您显示它用于发出请求和响应正文的 url。在此正文中,您会找到 "vmId" 和 "id" 字段。例如,它发送的请求之一是:

https://management.azure.com/subscriptions/{my-subscription-id}/providers/Microsoft.Compute/virtualMachines?api-version=2015-06-15

对此的响应正文是带有相关条目的 json。希望这可以帮助! :)

write-host(Get-AzVm -name "hostname").ResourceGroupName