我在Azure Windows VM上运行C#代码。有没有办法让我找出这个VM所属的资源组?
VM已部署Azure资源管理API(新的,非经典的)
答案 0 :(得分:2)
以下内容将保证能够区分不同资源组中具有相同名称的虚拟机:
从您的C#代码中,找到vmId(涉及在以下链接中运行其中一个命令,或者可能使用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。希望这可以帮助! :)
答案 1 :(得分:0)
查找资源组的一种方法是列出Azure订阅中的所有虚拟机。您将使用的URL是:
它将以JSON格式返回Azure订阅中所有虚拟机的列表,其中每个项目代表一个虚拟机。您可以先通过name
属性进行筛选,以查找匹配的虚拟机。那么对你来说很重要的属性id
总是格式为:
/订阅/ [订阅-ID] / resourceGroups /的 [资源组名称] 强> /providers/Microsoft.Compute/virtualMachines/ [虚拟机名称]
您可以简单地解析它以获取资源组名称。
答案 2 :(得分:0)
您是如何部署VM的?通过portal.azure.com?通过CLI?电源外壳?在任何这些情况下,通常都需要指定资源组名称。实际上,在门户网站中,如果单击"虚拟机",则应该说资源组:
答案 3 :(得分:0)
write-host(Get-AzVm -name "hostname").ResourceGroupName