如何使用PowerShell在Azure中运行VM脚本的ResourceId?

时间:2017-08-22 18:09:37

标签: powershell azure

我正在编写一个脚本来设置Azure中的警报,我希望在Azure中运行自定义脚本扩展,但运行Add-AzureRmMetricAlertRule所需的参数之一仍然是TargetResourceId这是应该配置警报的VM的ResourceId。

所以现在我想知道 - 如何使用PowerShell获取当前VM的ResourceId?

我尝试过的所有内容都假定我有一个ResourceName或者我在订阅中迭代虚拟机列表,而我感兴趣的是脚本运行的特定实例。

2 个答案:

答案 0 :(得分:1)

Azure的instance metadata service (in preview)类似于AWS / GCE提供的https://feedback.azure.com/forums/216843-virtual-machines/suggestions/6204911-provide-virtual-machine-instance-metadata-support。你应该能够执行:

curl -H Metadata:true http://169.254.169.254/metadata/instance?api-version=2017-03-01

从服务器获取实例元数据。

此处要求/讨论此功能:uniqBy

答案 1 :(得分:0)

如果我的理解是正确的,您可以使用以下命令获取VM的资源ID。

(get-azurermvm -ResourceGroupName shuihv -Name shui).id

此外,如果您知道VM的资源组名称和VM名称,也可以构建id。格式应如下所示:

/subscriptions/<subscription id>/resourceGroups/<group name>/providers/Microsoft.Compute/virtualMachines/<vm name>

更新

如上所述,您可以使用Azure metadata来获取VM的名称。根据VM的名称,您可以使用Azure PowerShell获取VM的资源组名称。

 $vm=get-azurermvm |Where-Object {$_.Name -eq "shui"}

$vm.ResourceGroupName

然后你可以构建资源ID。