我正在编写一个脚本来设置Azure中的警报,我希望在Azure中运行自定义脚本扩展,但运行Add-AzureRmMetricAlertRule
所需的参数之一仍然是TargetResourceId
这是应该配置警报的VM的ResourceId。
所以现在我想知道 - 如何使用PowerShell获取当前VM的ResourceId?
我尝试过的所有内容都假定我有一个ResourceName或者我在订阅中迭代虚拟机列表,而我感兴趣的是脚本运行的特定实例。
答案 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。